PHP通过链接手动提交POST数据无法保存到文本文件问题咨询
问题根因
- 请求方法与参数接收逻辑不匹配
你通过地址栏直接访问、点击<a>标签跳转发起的都是GET请求,但你的PHP代码仅设置了$_SERVER["REQUEST_METHOD"] == "POST"的分支才处理数据,这段逻辑根本不会被触发。同时你用$_POST超全局变量接收参数,但URL上的查询参数只会存储在$_GET变量中,就算跳过请求方法判断,也拿不到对应参数值。 - URL参数格式错误
你构造的参数存在两处问题:usernamesave=Nome&Misael写法错误,&是URL参数的默认分隔符,这么写相当于传递了两个参数:键为usernamesave值为Nome、键为空值为Misael,无法实现传递用户名为Nome&Misael的需求,需要把参数值内的&转义为%26。- 示例
<a>标签的参数?method=post&joao&6y没有按照键=值的规范书写,后端无法读取到对应字段的参数值。
- 缺少写入文件的逻辑
你贴出的代码仅完成了参数接收赋值给变量的操作,没有编写将变量写入文本文件的相关逻辑,就算参数正确获取也不会生成存储文件。
修复方案
- 如果你要保留URL传参跳转提交的逻辑,修改参数接收代码为:
// 直接从GET请求取参数,也可以写兼容逻辑同时支持GET和POST $username = $_GET['usernamesave']; $userxp = $_GET['userxp']; $userid = $_GET['userid']; // 补充写入文件逻辑,例如用file_put_contents追加内容到指定文件
- 修正URL参数格式,所有参数值中的特殊字符提前做URL编码,比如
&转%26、空格转%20。 - 如果要保留POST请求逻辑,就不能用href跳转提交,改为用JS发起POST请求、或者表单提交的方式实现。
内容的提问来源于stack exchange,提问作者Jhonny30
相关产品推荐
相关产品推荐

