我正在制作一个需要用户登录的网站。所以我正在使用 $_SESSION 。但它似乎没有用。我每次使用 $_SESSION 时总是使用该代码,只是这次它不起作用。这是
login.php
页面中的代码:
<?php
require '../../include/db_connect.php' ;
if(isset($_POST["login"])){
$username = $_POST["username"];
$password = $_POST["password"];
$result = mysqli_query($conn, "SELECT * FROM user WHERE username = '$username'");
if(mysqli_num_rows($result) === 1){
$row = mysqli_fetch_assoc($result);
if(password_verify($password, $row["password"])){
$_SESSION["login"] = true;
$_SESSION['user_id'] = $row['user_id'];
header("Location: ../index.php");
exit();
}
}
$error = true;
}
?>
当我
var_dump
login.php
页面中的$_SESSION时,输出是true
。但是当我登录后在另一个页面中var_dump
它时,输出是false
。这是另一页的代码:
<?php
session_start();
if(!isset($_SESSION["login"])){
header("Location: ../../index.php");
exit();
}
?>
有人知道为什么会这样吗?因为我已经尝试了在互联网上可以找到的所有内容,但没有任何效果。如果有人能帮我解决这个问题,我将不胜感激。
在使用
session_start()
之前,您可以放置ob_start()
通过启用缓冲来延迟发送http标头。如果问题是这样,您可能会像这样重写代码;
<?php
ob_start();
session_start();
?>
代替
<?php
session_start();
?>
并且不要忘记在您拥有的所有 php 文件中调用这两个。