我有一个使用PHP $_SESSION[]
的简单登录系统。
用于检查用户是否已登录的代码是
if(isset($_SESSION['login-mywebsite']) && !empty($_SESSION['login-mywebsite'])){
//user is logged in
}
但是,对于PHP 7.1等(7.2、7.3),它无法正常工作。
我已经为此设置了测试页
var_dump($_SESSION['login-mywebsite']);
它显示string(1) "1"
,因此可以正常工作。
但是当我在头文件中执行相同操作时,它只会显示NULL
。
现在我将使用PHP 7.0,但是有人知道为什么会这样吗?也许这是我的服务器或文件的问题,但也许它们在7.1+中更改了我不知道的内容。
谢谢!
编辑:
测试页中的代码:
<?php
session_start();
var_dump($_SESSION['login-mywebsite']);
?>
header.php文件中的代码:
<?php
session_start();
$userLogged = (isset($_SESSION['login-mywebsite']) && !empty($_SESSION['login-mywebsite']));
if($userLogged){
include 'database.php';
$db = getDb();
if(!isset($active)){
$active = 'home';
}
$stmt = $db->prepare('SELECT * FROM `usuarios` WHERE `id` = ?');
$stmt->execute([$_SESSION['login-mywebsite']]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);
}
?>
然后我有了一个index.php:
if(!$userLogged){
//form to login
} else {
header('Location: home.php');
}
在使用var_dump时,header.php和index.php都不会显示会话的值(它们显示为空),但是测试文件会显示。