所以我创建了一个网站,当用户尝试填写登录表单(用户名和密码)时,显示以下错误信息:
Error response
Error code: 501
Message: Unsupported method ('POST').
Error code explanation: HTTPStatus.NOT_IMPLEMENTED - Server does not support this operation.
对于服务器,我使用 Python 3 http.server .要启动服务器,我有一个包含以下代码的批处理文件:
python -m http.server 80
我正在寻找一种方法来接收用户提交的登录凭据,并将它们存储在文本文件 (.txt) 中。
在做了一些研究之后,我得到了我需要创建一个 PHP 脚本的印象,我不知道如何做到这一点。这是我的尝试:
<?php
$username = htmlspecialchars($_POST['username']);
$password = htmlspecialchars($_POST['password']);
echo $username, ' ', $password;
?>
最佳答案
谢谢@MonkeyZeus,我通过对您的代码进行了一些更改来解决问题。
import socketserver
import http.server
import logging
import cgi
PORT = 80
class ServerHandler(http.server.SimpleHTTPRequestHandler):
def do_GET(self):
logging.error(self.headers)
http.server.SimpleHTTPRequestHandler.do_GET(self)
def do_POST(self):
logging.error(self.headers)
form = cgi.FieldStorage(
fp=self.rfile,
headers=self.headers,
environ={'REQUEST_METHOD':'POST',
'CONTENT_TYPE':self.headers['Content-Type'],
})
for item in form.list:
logging.error(item)
http.server.SimpleHTTPRequestHandler.do_GET(self)
with open("data.txt", "w") as file:
for key in form.keys():
file.write(str(form.getvalue(str(key))) + ",")
Handler = ServerHandler
httpd = socketserver.TCPServer(("", PORT), Handler)
print("serving at port", PORT)
httpd.serve_forever()
当收到 post 请求时,会创建一个名为“data”的文本文件。然后使用 for 循环遍历键 ( source ) 并将那里的值写入文件。
关于php - http.server - 不支持的方法 ('POST' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51677570/