You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:23:57