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

登录验证失败重定向后,如何修改login.php的指定p标签文本?

解决方案

方法一:通过URL参数传递错误状态

  1. 修改loginscript.php中验证失败的重定向逻辑:

    } else {
        // 重定向时携带错误标识参数
        header('Location: login.php?error=invalid');
        exit; // 重定向后必须终止后续代码执行
    }
    
  2. 修改login.php里的<p>标签,用PHP动态判断输出内容:

    <p><?php echo isset($_GET['error']) && $_GET['error'] == 'invalid' ? 'USERNAME OR PASSWORD IS WRONG' : 'LOG IN'; ?></p>
    

方法二:通过Session存储错误信息(更隐蔽)

如果不想在URL中暴露错误参数,可借助Session传递状态:

  1. 修改loginscript.php的失败分支:

    } else {
        $_SESSION['login_error'] = 'USERNAME OR PASSWORD IS WRONG';
        header('Location: login.php');
        exit;
    }
    
  2. 在login.php的最顶部开启Session(必须在输出任何HTML之前),并处理错误信息:

    <?php
    session_start();
    $displayText = 'LOG IN';
    if (isset($_SESSION['login_error'])) {
        $displayText = $_SESSION['login_error'];
        unset($_SESSION['login_error']); // 清除错误标记,避免刷新页面重复显示
    }
    ?>
    

    然后更新<p>标签:

    <p><?php echo $displayText; ?></p>
    

重要安全修复:解决SQL注入漏洞

你的loginscript.php直接将用户输入拼入SQL语句,存在严重注入风险,建议改用预处理语句:

// 替换原有的查询代码
$stmt = mysqli_prepare($conn, "SELECT * FROM login_table WHERE nick=? AND pass=?");
mysqli_stmt_bind_param($stmt, "ss", $nick, $pass);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);

if (mysqli_num_rows($result)) {
    $_SESSION["logged"] = true;
    header("Location: main.php");
} else {
    // 这里用上面两种方法的任意一种处理失败重定向
}
mysqli_stmt_close($stmt);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 06:35:18