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

PHP网站注册提交出现404 Object not Found问题求助

解决注册提交后404错误及代码问题

嘿,看你提交注册表单后碰到404错误了,我仔细瞅了你的代码,发现里面藏着不少语法和逻辑小问题,这些大概率就是导致异常的根源,咱们一步步来修正:

首先是致命的语法错误(这些会直接让PHP脚本跑不起来)

  • 变量名写错了:你写的$POST_['submit']应该是$_POST['submit'],而且这个判断语句没加闭合大括号,还把数据库连接的include_once放在了判断里——这就导致如果没有提交请求,后面的代码直接用$conn会报未定义错误,脚本直接崩了。正确的做法是先把数据库连接文件包含进来,再处理提交逻辑:
    // 先把数据库连接文件放在顶部,确保后续能用到$conn
    include_once 'dbh.inc.php';
    if (isset($_POST['submit'])) {
        // 所有注册处理逻辑都塞这里面
    }
    
  • 每个header()后面都没加分号:比如header("Location: ../signup.php?signup=empty")这种写法,PHP会直接报语法错误,脚本中断,根本跳不回注册页,浏览器就可能显示404或者服务器错误页面。记得每个语句末尾都要加分号!
  • 多了个多余的else分支:代码最后那个} else {根本没有对应的if,这会直接让PHP解析失败,服务器返回500错误,有时候浏览器会把这种错误当成404显示,这个必须删掉。

然后是逻辑和变量的小错误

  • 正则验证重复判断名字:你写的!preg_match("/^[a-zA-Z]*$", $first) || !preg_match("/^[a-zA-Z]*$", $first),第二个判断应该是$last啊,不然姓氏的验证等于没做,用户输入带数字的姓氏也能通过。
  • 查询结果变量名写错:$resultCheck = mysqli_num_rows($results);这里的$results应该是$result,因为前面查询数据库的结果存在$result里,这个错误会导致判断用户名是否存在的逻辑失效。
  • SQL插入语句拼写错了:INSER INTO少了个T,应该是INSERT INTO;还有'$ last'里多了个空格,改成'$last',不然插入数据库的姓氏会带个空格,后续用的时候会出问题。
  • 跳转参数拼写错:header("Location: ../signup.php?signup=succes")里的succes应该是success,不然前端拿参数的时候会识别成错误状态。

最后额外排查下404的可能

如果把上面的错误都改完还是404,你可以检查下:

  • 表单的action属性是不是正确指向这个处理脚本的路径,比如如果这个脚本在includes/signup.inc.php,那表单的action要写对相对路径,别指向了不存在的文件。
  • 确认服务器能正确解析PHP文件,比如文件名后缀是不是.php,有没有被当成静态文件处理了。

我把修正后的代码贴出来,你可以参考下:

include_once 'dbh.inc.php';

if (isset($_POST['submit'])) {
    $first = mysqli_real_escape_string($conn, $_POST['first']);
    $last = mysqli_real_escape_string($conn, $_POST['last']);
    $email = mysqli_real_escape_string($conn, $_POST['email']);
    $uid = mysqli_real_escape_string($conn, $_POST['uid']);
    $pwd = mysqli_real_escape_string($conn, $_POST['pwd']);

    // 检查空字段
    if (empty($first) || empty($last) || empty($email) || empty($uid) || empty($pwd)) {
        header("Location: ../signup.php?signup=empty");
        exit();
    } else {
        // 验证名字和姓氏格式
        if (!preg_match("/^[a-zA-Z]*$/", $first) || !preg_match("/^[a-zA-Z]*$/", $last)) {
            header("Location: ../signup.php?signup=invalid");
            exit();
        } else {
            // 验证邮箱格式
            if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
                header("Location: ../signup.php?signup=email");
                exit();
            } else {
                // 检查用户名是否已存在
                $sql = "SELECT * FROM users WHERE user_uid='$uid'";
                $result = mysqli_query($conn, $sql);
                $resultCheck = mysqli_num_rows($result);
                if ($resultCheck > 0) {
                    header("Location: ../signup.php?signup=usernametaken");
                    exit();
                } else {
                    // 哈希加密密码
                    $hashedPwd = password_hash($pwd, PASSWORD_DEFAULT);
                    // 插入用户数据到数据库
                    $sql = "INSERT INTO users (user_first, user_last, user_email, user_uid, user_pwd) VALUES ('$first', '$last', '$email', '$uid', '$hashedPwd');";
                    mysqli_query($conn, $sql);
                    header("Location: ../signup.php?signup=success");
                    exit();
                }
            }
        }
    }
} else {
    header("Location: ../signup.php");
    exit();
}

内容的提问来源于stack exchange,提问作者vinix

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:49:09