我想要使用 Python 编写一个 Web服务器 ,但是现在只能发送静态页面
我想要使它能发送 动态页面 ,但我不要知道怎么在 Python 给 php-cgi 传 get,post 之类的数据
例如
POST https://example.com HTTP/1.1
Host: example.com
a=1&b=2
我想要通过 Python 将这些 POST的数据 传给 a.php
a.php:
<?php
echo "\r\npost:";
print_r($_POST);
echo "\r\ncookie:";
print_r($_COOKIE);
?>
谢谢 (第一次提问,可能写的不怎么好
解决了,使用环境变量
python执行cmd
set REDIRECT_STATUS=true
SET REQUEST_METHOD=POST
SET QUERY_STRING=ie=UTF-8^&wd=hello^&fsdf=fsdfaf
set HTTP_COOKIE=PHPSESSID=123;PHPSESfsd=fsdfsafa
SET CONTENT_TYPE=application/x-www-form-urlencoded
SET CONTENT_LENGTH=16
SET PATH_TRANSLATED=D:\phpstudy_pro\Extensions\php\php7.3.4nts\php-cgi.exe
SET GATEWAY_INTERFACE=CGI/1.1
SET SERVER_NAME=localhost
SET SERVER_PORT=80
set SCRIPT_FILENAME=C:\Users\FengZi\Desktop\index.php
echo test=hello world | D:\phpstudy_pro\Extensions\php\php7.3.4nts\php-cgi.exe
test=hello world为post数据 QUERY_STRING为get数据
要在 Python 中实现动态页面,您可以使用 WSGI(Web Server Gateway Interface)来将 Web 服务器与 Python 应用程序连接起来。WSGI 允许您在 Web 服务器和 Python 应用程序之间传递数据,包括 GET 和 POST 请求的数据。
对于您的问题,您可以使用 Python 的内置 urllib 模块来发送 POST 请求,将数据传递给 a.php。以下是一个示例代码:
import urllib.parse
import urllib.request
# POST 数据
data = {'a': 1, 'b': 2}
data = urllib.parse.urlencode(data).encode('utf-8')
# 发送 POST 请求
url = 'http://example.com/a.php'
req = urllib.request.Request(url, data)
resp = urllib.request.urlopen(req)
result = resp.read().decode('utf-8')
# 输出结果
print(result)
这将发送一个名为 a.php 的 POST 请求,带有 a=1 和 b=2 的数据。在您的 a.php 文件中,您可以使用 $_POST 变量来访问这些数据。
请注意,这只是一个简单的示例代码,需要根据您的实际情况进行调整。您可能需要添加更多的代码来处理错误、处理响应等。