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

在VS Code中运行PHP时出现HTTP ERROR 405错误(端口5500)

注册表单提交后跳转错误页面的问题排查与修复

问题描述

近期我用HTML、CSS、JS技术栈搭建的网站,注册表单输入信息点击提交后,页面会重定向至错误页面(截图:错误页面截图)。先后用Opera GX、Google Chrome浏览器测试,问题均存在。

以下是相关代码:

HTML代码

<div class="form signup">
            <header>Sign Up</header>
            <form action="./register.php" method="post">
                <input type="text" placeholder="Full name" required name="fullName"/>
                <input type="text" placeholder="Email address" required name="email"/>
                <input type="password" placeholder="Password" required name="password"/>
                <div class="checkbox">
                <input type="checkbox" id="signupCheck" />
                <label for="signupCheck">I accept all terms & conditions</label>
                </div>
                <button type="submit" onclick="window.location.href='/pages/TodoList/todoList.html'"class="signup-btn">Sign Up</button>
            </form>
            </div>

PHP代码

<?php
    $fullName = $_POST['fullName']
    $email = $_POST['email']
    $password = $_POST['password']

    // Database Connection
    $conn = new mysqli('localhost', 'root', '', 'rtregister')
    if(conn->connect_error) {
        die('Connection Failed : '.$conn->connect_error)
    } else {
        $stmt = $conn->prepare("insert into registration(fullName, email, password) values(?, ?, ?)")
        $stmt->bind_param("sss", $fullName, $email, $password)
        $execval = $stmt->execute();
        echo $execval;
        echo "registration Successful... Redirecting"
        $stmt->close()
        $conn->close()
    }
?>

错误分析

  1. PHP语法错误:所有语句末尾都缺少分号,会直接导致PHP解析失败返回500服务器错误;if(conn->connect_error)中的conn未加$符号,属于未定义变量错误。
  2. 表单逻辑冲突:提交按钮同时设置onclick跳转事件和表单action提交属性,导致表单提交与JS跳转触发顺序混乱,要么未完成后端注册就跳转,要么后端报错直接显示错误页面。
  3. 复选框无必填校验:用户可跳过条款勾选直接提交表单,不符合业务逻辑。
  4. 密码明文存储:直接将密码存入数据库,存在严重安全隐患。

修复方案

修复后的HTML代码

<div class="form signup">
    <header>Sign Up</header>
    <form action="./register.php" method="post">
        <input type="text" placeholder="Full name" required name="fullName"/>
        <input type="text" placeholder="Email address" required name="email"/>
        <input type="password" placeholder="Password" required name="password"/>
        <div class="checkbox">
            <input type="checkbox" id="signupCheck" required />
            <label for="signupCheck">I accept all terms & conditions</label>
        </div>
        <button type="submit" class="signup-btn">Sign Up</button>
    </form>
</div>
  • 移除按钮的onclick事件,让表单正常提交到register.php处理;
  • 给复选框添加required属性,强制用户勾选条款才能提交。

修复后的PHP代码

<?php
    // 开启错误提示,方便调试(上线后可关闭)
    error_reporting(E_ALL);
    ini_set('display_errors', 1);

    $fullName = $_POST['fullName'];
    $email = $_POST['email'];
    // 用password_hash加密密码,保障安全
    $password = password_hash($_POST['password'], PASSWORD_DEFAULT);

    // 数据库连接
    $conn = new mysqli('localhost', 'root', '', 'rtregister');
    if($conn->connect_error) {
        die('Connection Failed : '.$conn->connect_error);
    } else {
        $stmt = $conn->prepare("insert into registration(fullName, email, password) values(?, ?, ?)");
        $stmt->bind_param("sss", $fullName, $email, $password);
        $execval = $stmt->execute();
        
        // 注册成功后跳转至目标页面
        header("Location: /pages/TodoList/todoList.html");
        exit(); // 终止后续代码执行,确保跳转生效

        $stmt->close();
        $conn->close();
    }
?>
  • 补全所有语句末尾的分号,修正变量引用错误;
  • 使用password_hash对密码进行加密存储;
  • 用header()实现注册成功后的页面跳转,替代echo输出,避免输出内容影响跳转;
  • 添加exit()确保跳转后后续代码不再执行;
  • 开头添加错误提示代码,方便调试过程中排查问题。

额外注意事项

  • 确保Web服务器(如Apache、Nginx)已正确配置PHP解析环境,且register.php的文件路径与表单action属性一致;
  • 确认数据库rtregister及表registration已创建,表中fullName、email、password字段的类型和长度符合要求(password字段建议设置为至少60字符长度);
  • 调试完成后,建议关闭PHP错误提示,避免泄露服务器信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 11:30:43