我尝试在我的应用程序中使用一些 session 变量,但是,我无法让它们显示在我需要它们的页面上。
这是设置它们的代码(我也手动为它们分配了值,所以问题不是数据库拉取):
if ($name != ""){
$_SESSION['name'] = $name;
$_SESSION['id'] = $user_id;
}
我用 session_start();
开始该页面,就像我在所有将使用 session 变量的页面上所做的那样。
当我尝试在另一个页面上调用 session 变量时,它们不再存在,即使那是分配值的页面重定向到的页面。
这就是我尝试调用 session 变量的方式:
$name = $_SESSION['name'];
$user_id = $_SESSION['id'];
为什么要这样做?
编辑:为了帮助我包括该页面的其余代码。数据库连接部分工作正常,它们与我在其他地方使用的相同。
<?php
session_start();
define('DB_SERVER', '<server>');
define('DB_USER','<db>');
define('DB_PASSWORD' , '<password>');
define('DB_NAME' , '<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();
?>
<script type="text/javascript">
<!--
window.location = "store.php"
//-->
</script>
<?php
}
else{
?>
<script type="text/javascript">
<!--
window.location = "register.php"
//-->
</script>
<?php
}
?>
最佳答案
只有两种可能性:
- 在任何输出之前您没有启动 session 。
$name
已经为空或null
。
您必须执行以下操作才能进行调试:
在 if 条件之前回显 $name
。error_reporting(E_ALL);
或检查这个问题:How to get useful error messages in PHP?
关于php - session 变量不持久,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18565563/