我有一些会话变量要在我的应用程序中尝试使用,但是,我无法使它们显示在需要它们的页面上.
这是设置它们的代码(我也已经为它们手动分配了值,因此问题出在数据库拉力上):
if ($name != ""){
$_SESSION['name'] = $name;
$_SESSION['id'] = $user_id;
}
我以session_start();开头该页面,就像在将要使用会话变量的所有页面上一样.
当我尝试在另一个页面上调用会话变量时,它们不再存在,即使该页面是分配值的页面也重定向到该页面.
这就是我试图调用会话变量的方式:
$name = $_SESSION['name'];
$user_id = $_SESSION['id'];
为什么会这样做呢?
编辑:为了帮助我包括该页面的其余代码.数据库连接部分工作正常,它们与在其他地方使用eveyr相同.
session_start();
define('DB_SERVER', '');
define('DB_USER','');
define('DB_PASSWORD' , '');
define('DB_NAME' , '');
$conn = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME) or
die('There was a problem connecting to the database');
$stmt = "Select User.user_id, User.name from User where User.username = '" .
$_POST["username"] . "' AND User.password = '" . $_POST["pwd"] . "';";
if(!$result = $conn->query($stmt)){
die('there was an error retrieving the information');
}
$row = $result->fetch_assoc();
$name = $row['name'];
$user_id = $row['user_id'];
$_SESSION["name"] = $name;
$_SESSION["id"] = $user_id;
if ($name != ""){
$conn->close();
?>
}
else{
?>
}
?>
解决方法:
只有两个概率:
>在没有任何输出之前,您尚未启动会话.
> $name已经为空或为空.
您必须执行以下操作才能调试:
>在if条件之前回显$name.
> error_reporting(E_ALL);或签出此问题:How to get useful error messages in PHP?
标签:session,php
来源: https://codeday.me/bug/20191030/1968166.html