登录后无法跳转至index.php,页面仅刷新问题求助(附代码)
解决登录后无法跳转至index.php的问题
核心问题及修复方案
1. 未初始化会话(SESSION)
$_SESSION变量的使用必须先通过session_start()初始化,登录页和首页都需要在代码最顶部调用该函数,否则会话数据无法保存和读取,导致首页检测不到登录状态,直接跳回登录页。
2. Header跳转前存在输出
header("Location: ...")必须在任何HTML输出之前执行,你的login.php先输出了form的HTML代码,再执行PHP逻辑,这会导致Header无法生效,页面只会原地刷新。
3. 跳转后未终止后续代码执行
调用header()后需要立即执行exit()或die(),防止后续代码继续运行可能干扰跳转逻辑。
4. 存在SQL注入风险(额外修复)
直接将用户输入的$uname拼进SQL语句,会导致严重的SQL注入漏洞,必须使用预处理语句修复。
修改后的代码示例
login.php
<?php // 先启动会话 session_start(); require 'config1.php'; if(isset($_POST["submit"])){ $uname = $_POST["uname"]; $psw1 = $_POST["psw1"]; // 使用预处理语句防止SQL注入 $stmt = mysqli_prepare($conn, "SELECT * FROM Users WHERE Username = ?"); mysqli_stmt_bind_param($stmt, "s", $uname); mysqli_stmt_execute($stmt); $result = mysqli_stmt_get_result($stmt); $row = mysqli_fetch_assoc($result); if(mysqli_num_rows($result) > 0){ // 注意:实际项目中绝不能明文存储密码,应该使用password_hash和password_verify if($psw1 == $row["Password"]){ $_SESSION["login"] = true; $_SESSION["id"] = $row["id"]; header("Location: index.php"); // 终止后续代码执行 exit(); } else { echo "<script> alert('密码错误'); </script>"; } } else { echo "<script> alert('用户未注册'); </script>"; } } ?> <form action="" method="post"> UserName: <input type="text" name="uname"><br> Password: <input type="password" name="psw1"><br> <!-- 密码输入建议用type="password" --> <button type="submit" name="submit">Login</button> </form>
index.php
<?php session_start(); // 启动会话 require 'config1.php'; if(empty($_SESSION["id"])){ header("Location: login.php"); exit(); } $id = $_SESSION["id"]; // 同样用预处理语句防止注入 $stmt = mysqli_prepare($conn, "SELECT * FROM Users WHERE id = ?"); mysqli_stmt_bind_param($stmt, "i", $id); mysqli_stmt_execute($stmt); $result = mysqli_stmt_get_result($stmt); $row = mysqli_fetch_assoc($result); ?> <!DOCTYPE html> <html> <body> <h1>Welcome <?php echo $row["name"]; ?></h1> <a href="logout.php">Log out</a> </body> </html>
额外注意事项
- 密码存储:实际项目禁止明文存储密码,注册时用
password_hash()加密,登录时用password_verify()验证。 - 错误提示:尽量避免用JS弹窗做错误提示,可直接在页面内输出提示信息,提升用户体验。
内容的提问来源于stack exchange,提问作者Daniel Alamba
相关产品推荐
相关产品推荐

