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

标签 php python-3.x http webserver

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

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/

相关文章:

php - Shopware 6 中是否有订单状态更改事件?

javascript - 使用带有 Angular 2 的 http rest apis

php - mysql:存储任意数据

php - 拉维尔 : same table relationship error

python - 如何在python pptx中设置背景图片

python - 如何根据匹配的子字符串从一个列表创建多个列表?

javascript - Web 服务器是否可以仅使用 Javascript 来获取 TOR 浏览器的真实 IP?

git - 无法通过 HTTP 克隆远程 Git 镜像,但可以通过 SSH

php - Laravel - 超过锁定等待超时

python - 如何从python运行exe文件?