POST提交后隐藏字段无法被识别的原因咨询
问题现象
表单包含名为which_api的hidden字段,提交后跳转至自身执行PHP脚本:
- 使用GET方式提交时,字段可正常识别;
- 使用POST方式提交时,PHP报错「Undefined array key 'which_api'」,无法读取字段值。
问题原因
问题出在表单的enctype="text/plain"属性上。
这个编码类型会将表单数据以纯文本格式发送,而PHP的$_POST数组仅支持解析application/x-www-form-urlencoded(表单默认编码)和multipart/form-data(文件上传场景使用)两种格式的请求体,因此无法识别text/plain格式的参数,导致$_POST['which_api']不存在。
而GET方式是将参数拼接在URL中,不受enctype属性影响,所以能正常获取到字段值。
解决方案
直接去掉表单的enctype="text/plain"属性,使用默认的表单编码即可:
<form name="execute_api" action="index.php" method="POST" target="_self"> <input type="hidden" name="which_api" value="api_01"> <button type="submit" class="btn btn-dark btn-gradient dark btn-block"> RUN API CALL </button> </form>
如果后续需要实现文件上传功能,再将enctype设置为multipart/form-data,普通表单提交无需额外指定该属性。
内容的提问来源于stack exchange,提问作者DaveO
相关产品推荐
相关产品推荐

