MySQL存储数据后页面重定向异常:未提交数据自动跳转至成功页
解决PHP未提交表单自动跳转到success.html的问题
兄弟,你这问题太典型了——核心原因就是重定向代码没被包裹在表单提交的判断逻辑里!也就是说,不管用户有没有真的点提交按钮,只要访问这个PHP页面,header("Location: success.html");就会直接执行,自然一打开链接就跳走了。
看你给的代码片段,你已经写了if(isset($_POST['submit']))来判断表单是否提交,但估计是把重定向的代码放在了这个判断块外面,或者逻辑顺序错了。咱直接给你修正后的完整示例:
<?php // 开启输出缓冲,避免header之前有输出导致重定向失败(可选但推荐) ob_start(); $con=mysqli_connect("localhost","root","","vdl"); // 检查数据库连接 if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } // 只有当表单的submit按钮被点击时,才执行存储数据+重定向逻辑 if(isset($_POST['submit'])) { // 这里写你的数据存储逻辑,比如获取表单变量、执行INSERT语句 // 举个例子: $username = $_POST['username']; $phone = $_POST['phone']; $sql = "INSERT INTO your_table_name (username, phone) VALUES ('$username', '$phone')"; // 先执行数据存储,成功后再重定向 if(mysqli_query($con, $sql)) { header("Location: success.html"); exit; // 一定要加exit,阻止后续代码执行,避免意外 } else { // 存储失败时可以提示错误,或者跳转到错误页面 echo "数据存储失败: " . mysqli_error($con); } } // 如果没有提交表单,就显示你的HTML表单(这里放你的表单代码) ?> <form method="post" action="当前这个PHP文件的文件名.php"> <input type="text" name="username" placeholder="请输入姓名"> <input type="tel" name="phone" placeholder="请输入手机号"> <!-- 注意submit按钮的name属性必须是submit,和上面的判断对应 --> <button type="submit" name="submit">提交信息</button> </form>
再给你划几个关键注意点:
- 确保
header("Location: ...");之前绝对不能有任何输出(包括空格、HTML标签、echo内容),如果之前有输出,最开头加ob_start()开启缓冲就能解决。 - 表单的
method必须是post,而且submit按钮的name属性必须是submit,这样isset($_POST['submit'])才能正确判断表单是否提交。 - 重定向后一定要加
exit;或者die();,不然PHP会继续执行后面的代码,可能引发奇怪的问题。
内容的提问来源于stack exchange,提问作者user9740150
相关产品推荐
相关产品推荐

