7.0及更高版本的PHP出现问题,$ _ SESSION []无法像以前一样工作

时间:2019-04-03 01:19:42

标签: php

我有一个使用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都不会显示会话的值(它们显示为空),但是测试文件会显示。

0 个答案:

没有答案