HTML表单提交后PHP端$_POST为空无法获取参数问题排查
HTML表单提交后PHP $_POST为空问题修复方案
核心故障原因
- 所有表单
<input>元素仅配置了id属性,未设置name属性:浏览器提交表单时仅会携带带name属性的输入框数据,PHP的$_POST也以name值作为键名读取数据,缺少该属性会导致所有表单数据无法传递到后端,这也是你切换GET/POST方法都无效的核心原因。 - 提交按钮未设置
name="submit":原有PHP逻辑中isset($_POST['submit'])的判断条件永远不成立,表单处理代码不会执行。 - 表单
action属性值不规范:localhost/test.php缺少HTTP协议头会被识别为相对路径,本地磁盘路径c:\xampp\htdocs\test.php无法被浏览器识别为请求地址,同目录下的处理文件直接写action="test.php"即可。 - PHP代码中
header()跳转前存在输出:echo输出写在header()之前会触发HTTP头已发送错误,导致跳转失效。
修正后的HTML表单代码
<form name="Driftslog" action="test.php" method="POST"> Init: <input type="text" id="Init" name="Init" size="5" maxlength="5" autocomplete="on" required> <br/> LID: <input type="text" id="LID" name="LID" size="8" maxlength="8" required><br/> Ticket-ID: <input type="text" id="TicketID" name="TicketID" size="20" maxlength="15" required><br/> Kunde: <input type="text" id="Kunde" name="Kunde" size="25" maxlength="50" required><br/> Start tid: <input type="datetime-local" id="StartTid" name="StartTid" size="15" value="" required> <br/> Slut tid: <input type="datetime-local" id="SlutTid" name="SlutTid" size="15" value="" required><br/> Tilkald <input type="checkbox" id="Tilakd" name="Tilakd"><br/> Planlagt <input type="checkbox" id="Planlagt" name="Planlagt"><br/> Andet <input type="checkbox" id="Andet" name="Andet"><br/> <input type="submit" name="submit" value="Opret"> </form>
注:原datetime输入类型兼容性较差,已替换为通用的datetime-local类型,不影响数据提交逻辑
修正后的PHP处理代码
<?php // 测试时可放开下面的代码查看提交的POST数据 // var_dump($_POST); if(isset($_POST['submit'])) { $Init = trim($_POST["Init"]); $LID = trim($_POST["LID"]); $TicketID = trim($_POST["TicketID"]); $Kunde = trim($_POST["Kunde"]); $StartTid = trim($_POST["StartTid"]); $SlutTid = trim($_POST["SlutTid"]); // 修复原代码变量名拼写错误 $data = [ $Init, $LID, $TicketID, $Kunde, $StartTid, $SlutTid, "\n"]; $f = fopen("db.csv","a"); fputcsv($f, $data); fclose($f); print $TicketID; } // header必须放在所有输出之前 header("Refresh:3; url=http://localhost"); echo "oprettet med success"; exit(); ?>
内容的提问来源于stack exchange,提问作者Thomas Junker
相关产品推荐
相关产品推荐

