登录验证失败重定向后,如何修改login.php的指定p标签文本?
解决方案
方法一:通过URL参数传递错误状态
修改
loginscript.php中验证失败的重定向逻辑:} else { // 重定向时携带错误标识参数 header('Location: login.php?error=invalid'); exit; // 重定向后必须终止后续代码执行 }修改
login.php里的<p>标签,用PHP动态判断输出内容:<p><?php echo isset($_GET['error']) && $_GET['error'] == 'invalid' ? 'USERNAME OR PASSWORD IS WRONG' : 'LOG IN'; ?></p>
方法二:通过Session存储错误信息(更隐蔽)
如果不想在URL中暴露错误参数,可借助Session传递状态:
修改
loginscript.php的失败分支:} else { $_SESSION['login_error'] = 'USERNAME OR PASSWORD IS WRONG'; header('Location: login.php'); exit; }在
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
相关产品推荐
相关产品推荐

