000webhost站点无法接收Python requests发送的POST数据求助
问题原因与解决方案
为什么直接访问网页看不到POST数据
直接访问网页发起的是GET请求,而$_POST仅存储当前请求中通过POST方式提交的数据。HTTP是无状态协议,Python发送的POST请求数据仅在那次请求的生命周期内存在,后续的GET请求无法获取到之前POST的数据,所以执行var_dump($_POST)会返回空数组。
解决办法
要让直接访问网页时能看到之前提交的POST数据,需要把数据持久化存储,以下是两种可行方案:
方案1:将数据写入文件存储
修改page.php代码,把POST接收的数据写入文件,访问时读取文件内容显示:
<?php // 处理POST请求,将数据写入文件 if(!empty($_POST)){ $data = $_POST['data']; // 写入到当前目录的data.txt文件,注意目录需有写入权限 file_put_contents('data.txt', $data); echo "The message received from HTTP request: $data"; } // 处理GET请求,读取已存储的数据 else{ $savedData = file_exists('data.txt') ? file_get_contents('data.txt') : 'No data received yet'; echo "Saved message: $savedData"; echo "<meta http-equiv='refresh' content='3'>"; } ?>
方案2:使用Session临时存储(基于用户会话)
如果只需要在当前浏览器会话中查看数据,可以用Session存储:
<?php // 启动Session,必须放在所有输出之前 session_start(); // 处理POST请求,存入Session if(!empty($_POST)){ $_SESSION['data'] = $_POST['data']; echo "The message received from HTTP request: " . $_POST['data']; } // 处理GET请求,从Session读取数据 else{ $displayData = isset($_SESSION['data']) ? $_SESSION['data'] : 'No data received yet'; echo "Last received message: $displayData"; echo "<meta http-equiv='refresh' content='3'>"; } ?>
注意事项
- 000webhost环境中,确保脚本所在目录有写入权限,否则
file_put_contents会执行失败,可在后台文件管理器中将目录权限设置为755。 - 使用Session时,
session_start()必须放在任何HTML输出或echo之前,否则会报错。
内容的提问来源于stack exchange,提问作者TopCodeG
相关产品推荐
相关产品推荐

