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

登录页验证成功后提交按钮无法跳转至dashboard.php问题求助

问题解决方案

你遇到的跳转失效问题主要由以下几个原因导致:

  1. HTML代码缺少<form>标签,提交按钮无法正确触发POST请求(如果你的实际代码里确实没加的话)
  2. 登录成功后输出的JS代码后面仍会加载页面剩余HTML,干扰跳转逻辑,同时提示文案错误(显示注册成功,实际是登录操作)
  3. 未将用户信息存入Session,就算跳转到dashboard.php也可能因未验证登录状态被拦截
  4. 直接拼接用户输入到SQL语句里,存在严重的SQL注入风险

修复后的完整代码

PHP 部分

<?php
session_start();
error_reporting(0);
include("include/config.php");
if(isset($_SESSION['captcha_code']) && isset($_POST['submit']))
{
    if ($_SESSION['captcha_code'] == $_POST['captcha']) {
        // 用预处理语句防SQL注入
        $stmt = mysqli_prepare($con, "SELECT * FROM users WHERE email=? and password=?");
        mysqli_stmt_bind_param($stmt, "ss", $_POST['email'], md5($_POST['password']));
        mysqli_stmt_execute($stmt);
        $ret = mysqli_stmt_get_result($stmt);
        $num = mysqli_fetch_array($ret);
        
        if(mysqli_num_rows($ret) > 0) {
            // 把用户信息存到Session里,方便后续页面验证登录状态
            $_SESSION['userid'] = $num['id'];
            $_SESSION['email'] = $num['email'];
            
            // 输出跳转JS后立刻终止脚本,避免后续HTML干扰
            echo "<script>
                    alert('登录成功,马上跳转到控制台');
                    window.location.href = 'dashboard.php';
                  </script>";
            exit();
        } else {
            $_SESSION['errmsg'] = "邮箱或密码错误";
            header("location: user-login.php");
            exit();
        }
    } else {
        $_SESSION['errmsg'] = "邮箱、密码或验证码错误";
        header("location: user-login.php");
        exit();
    }
}
?>

HTML 部分

<html>
<!-- 必须加<form>标签包裹表单控件,否则提交按钮没用 -->
<form method="post" action="">
    <div class="form-group">
        <span class="input-icon">
            <input type="text" class="form-control" name="email" placeholder="Email" required>
            <i class="fa fa-user"></i> 
        </span>
    </div>
    <div class="form-group form-actions">
        <span class="input-icon">
            <input type="password" class="form-control password" name="password" placeholder="Password" required>
            <i class="fa fa-lock"></i>
        </span>
        <a href="forgot-password.php">Forgot Password ?</a>
    </div>
    <div class="form-actions">
        <div class="form-group form-actions">
            <img src="captcha.php" alt="Captcha Code" id="captchaImg">
            <!-- 修复拼写错误:javasript → javascript -->
            <a href="javascript: void(0);" onclick="refreshCaptcha();"><i class="fa fa-refresh"></i></a>
            <input type="text" class="form-control" name="captcha" id="captcha_code" placeholder="Enter above captcha" required>
        </div>
    </div>

    <div class="form-actions">
        <button type="submit" class="btn btn-primary pull-right" name="submit">Login <i class="fa fa-arrow-circle-right"></i></button>
    </div>
</form>
</html>

关键修复说明

  • 补上<form>标签:没有这个标签,提交按钮点击后根本不会发送POST请求到PHP处理逻辑
  • 修复JS拼写错误:原代码里的javasript是错的,改成javascript才能正常刷新验证码
  • 用预处理语句防注入:直接把用户输入拼进SQL是高危操作,必须用参数绑定
  • 登录成功后存Session:dashboard.php可以通过判断$_SESSION['userid']是否存在来验证用户是否登录
  • 输出JS后立刻exit:避免后续的HTML代码输出,确保JS能正常执行跳转
  • 修正提示文案:把错误的“注册成功”改成“登录成功”,符合实际操作场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 01:01:22