gpt4 book ai didi

php - http.server - 不支持的方法 ('POST' )

转载 作者:行者123 更新时间:2023-12-03 14:39:12 25 4
gpt4 key购买 nike

所以我创建了一个网站,当用户尝试填写登录表单(用户名和密码)时,显示以下错误信息:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com