软件按指定格式发送POST请求失败,如何调整PHP程序?
解决软件提交数据无法保存到proxies.txt的问题
嘿,我一眼就看出问题所在了!你的网页表单是用POST方式提交数据的,所以post.php里的$_POST['proxies']能拿到值;但你的软件发送的请求格式是http://website.com/postform?proxies=%content%——这其实是GET请求(参数直接挂在网址后面),而不是真正的POST请求,所以post.php根本拿不到这个参数,自然保存失败啦。
给你两个简单的解决方案,选哪个都行:
方案1:让post.php同时兼容GET和POST请求(推荐,不用改软件)
直接修改post.php的代码,让它既能读取POST参数,也能读取GET参数,这样不管是表单提交还是软件请求都能正常工作:
<?php // 先尝试拿POST参数,没有的话再拿GET参数,防止空值报错 $proxies = $_POST['proxies'] ?? $_GET['proxies'] ?? ''; // 确保有内容再写入文件 if (!empty($proxies)) { $file = 'proxies.txt'; // 如果你不想每次提交都覆盖旧内容,就用下面这行(追加新内容并换行) // file_put_contents($file, $proxies . PHP_EOL, FILE_APPEND); file_put_contents($file, $proxies); } ?>
然后把软件的请求地址改成http://website.com/post.php?proxies=%content%(直接指向处理脚本,不用经过postform.php),这样软件发送的请求就能被正确处理,原来的网页表单功能也完全不受影响。
方案2:让软件发送真正的POST请求(如果软件支持配置)
如果你的软件允许设置请求方法,那可以直接把请求地址设为http://website.com/post.php,然后把参数proxies=%content%放在POST请求体里(而不是网址后面),这样不用改任何PHP代码,就能和表单提交一样正常工作。
几个重要的小提醒
- 权限检查:确保
proxies.txt所在的文件夹有写入权限,不然即使代码对了也存不了文件 - 输入过滤:如果这个接口是公开的,最好给
$proxies加个简单过滤,比如trim($proxies)去掉前后空格,防止乱码或者恶意内容 - 追加写入:如果想保留每次提交的内容,记得用
FILE_APPEND参数,比如file_put_contents($file, $proxies . PHP_EOL, FILE_APPEND),这样每条内容单独一行,不会覆盖旧数据
内容的提问来源于stack exchange,提问作者 elison
相关产品推荐
相关产品推荐

