html用POST传值PHP接收不到怎么回事
```html 昨天半夜,一个朋友发来截图,回事html表单写的接收明明白白, 这种低级错误其实很常见,接收但更多时候是回事些隐蔽的坑。先说你最可能踩的接收那个:表单按钮没有 另一个高频问题是 再来说个容易忽略的:PHP版本差异。老项目用 还有一种情况,跟代码无关,是服务器配置。Nginx + PHP-FPM环境下,如果 最后说个我自己的糗事。有次写后台接口,用AJAX提交表单,忘了设置 你现在可以按这个顺序检查:1. form标签的action、method、enctype;2. 每个输入框的name属性;3. 是否有多余的嵌套form;4. 用浏览器F12看网络请求的payload;5. 服务器日志里有没有PHP错误。 如果请求里能看到Form Data,但PHP还是空,那就直接写个 写代码这事,有时候就是一层窗户纸。但捅破之前,你得先找到窗户在哪。希望你这会儿已经找到了。html用POST传值PHP接收不到?接收多半是这五个地方在捣乱
method="post",回事PHP那边用$_POST['name']死活取不到值。接收他急得直接截图给我看代码——表单里就一个输入框,回事一个提交按钮。接收我扫了一眼,回事差点笑出声,接收他把name属性写成了id。回事name属性?不对,按钮没name不影响其他字段。回事真正最常见的接收,是忘了给表单加action,或者action写成了空字符串。浏览器会把空action提交到当前URL,如果当前页面是index.html,那PHP代码根本没被执行。enctype。如果你用了文件上传,但没写成multipart/form-data,那除了文件,其他普通字段也可能丢失。更隐蔽的是——你检查过form标签的闭合吗?我见过有人把</form>写在了PHP代码后面,结果浏览器解析时把PHP输出也当成了表单内容,提交结构全乱了。<!-- 错误示范 --> <form method="post"> <input type="text" name="username"> <button>提交</button> </form> <?php echo $_POST['username']; ?> <!-- 如果上面这行PHP在form外面,没问题。但如果放在form内部,就会破坏结构 -->$_POST没问题,但你如果用了php://input来读取原始数据,可能因为请求头Content-Type不是application/x-www-form-urlencoded而拿不到。有一次我排查半天,发现是前端同事用fetch发送时手动设置了Content-Type: text/plain,PHP的$_POST直接空了。client_max_body_size设置太小,POST数据超过限制会被截断,甚至返回413错误。但有时候数据量不大,却因为request_terminate_timeout超时,PHP进程被杀,你看到的自然是什么都没收到。XMLHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'),结果后端收不到。但同样的代码在浏览器直接submit就正常——因为浏览器默认会带上正确的Content-Type。所以排查时,先分清是原生表单提交还是XHR/fetch请求。<?php var_dump($_POST); ?>测试,别用框架。
- 最近发表
- 随机阅读
- 搜索
-
- 友情链接
-