HTML表单带输入提交不触发POST方法,空提交正常如何解决
问题排查和解决方法
- 第一步先排查重定向导致POST转GET的问题,这是90%以上出现该类情况的原因:
绝大多数服务器配置的301/302重定向规则(比如http转https、域名带www转不带www、路径末尾自动补斜杠、伪静态规则),在跳转的时候会把POST请求转为GET请求,同时丢弃POST参数。你可以给form表单补充完整的提交地址属性,比如你当前页面实际访问地址是https://xxx.com/book.php,就给form加action="https://xxx.com/book.php",避开重定向规则触发。 - 第二步检查
connection.php引入文件的逻辑:
看这个文件里有没有参数校验、权限判断、防注入相关的逻辑,是否存在「接收到非空的studentid参数就执行跳转」的代码,跳转后的请求自然是GET方法,就会跳过你的POST判断分支。 - 第三步加调试代码定位问题:
在你的PHP代码第一行(也就是require_once("connection.php");之前)加入下面的代码,提交非空内容看输出结果:
如果这里输出的请求方法就是GET,说明请求在进入你的业务代码之前就已经被服务器层面的规则重定向过了,去查nginx/Apache的重定向配置即可;如果输出是POST,说明是你后续业务代码里有逻辑修改了var_dump($_SERVER['REQUEST_METHOD'], $_POST); exit;$_SERVER['REQUEST_METHOD']的值或者提前跳转走了。 - 额外排查点:检查是否有浏览器扩展、前端JS拦截了提交的表单请求,非空提交的时候自动做了跳转处理。
内容的提问来源于stack exchange,提问作者Boom
相关产品推荐
相关产品推荐

