我在使用PHP的登录系统时遇到麻烦。我有一个名为session.php
的文件,该文件包含在另一个名为index.php
的PHP文件中。
这是里面的代码:
<?php
if(session_status() == PHP_SESSION_NONE){
session_start();
}
$user = null;
include 'user.php';
include 'connection.php';
if(isset($_SESSION['myweb-login'])){
$id = $_SESSION['myweb-login'];
$stmt = $db->prepare('SELECT id, username, active_token, verified, wants_verification FROM usuarios WHERE id = ?');
$stmt->execute([$id]);
$userDb = $stmt->fetch(PDO::FETCH_ASSOC);
if(!$userDb){
unset($_SESSION['myweb-login']);
}else{
$user = new User($userDb['id'], $userDb['username'], $userDb['active_token'], $userDb['verified'], $userDb['wants_verification']);
}
}
?>
在使用XAMPP和PHP 7.3的计算机上,它可以正常工作。如果我也将其上传到使用PHP 7.3的apache服务器中,然后进入index.php
;
然后我检查$user
的值为NULL
。
但是,如果我切换到PHP 7.0,它可以正常工作,并且$user
现在应该是一个对象。
由于与库的兼容性,我需要使用PHP 7.3。
此外,如果直接转到session.php
文件,而不是从另一个文件中包含它,它也可以正常工作(即使在PHP 7.3中也是如此)。
我尝试过:
将session_start()
中的index.php
位放在文件开头。
使index.php
除了`include'session外什么也没有。
但一无所获。
此外,我无权访问日志,因此无法查看。
我尝试使用var_dumping的东西来查看session.php
文件是否一直被调用,直到if(isset($_SESSION['myweb-login'])){
行显示东西为止,但是之后什么也没显示。
答案 0 :(得分:0)
在phpinfo.php中检查会话参数
设置了会话参数“ session.save_path”:\ xampp \ tmp。
自定义php.ini
我已将此路径修改为该目录的真实路径。在我的情况下,“ session.save_path =“ C:\ xampp \ tmp”
重新启动Apache之后,可以编写会话并再次读取。