我遇到访问会话变量值的问题。
我正在创建一个登录页面,这是我设置会话变量的值。
的index.php
$row = mysqli_fetch_array($result);
if(mysqli_num_rows($result) > 0){
session_regenerate_id();
$user = mysqli_fetch_assoc($result);
$_SESSION['SESS_ID'] = $user['id'];
$_SESSION['SESS_UNAME'] = $user['username'];
$_SESSION['SESS_PASS'] = $user['password'];
session_write_close();
header("location:home.php");
exit();
}
home.php
<?php
session_start();
if(!isset($_SESSION['SESS_ID']) || (trim($_SESSION['SESS_ID'])) == ''){
header("location:index.php");
exit();
}
?>
<html>
<body>
<p>Login Successful</p>
</body>
</html>
这里的问题是我在$ _SESSION ['SESS_ID']中没有价值..那么如何在home.php中获取或访问此会话变量的值?
答案 0 :(得分:2)
删除$row = mysqli_fetch_array($result);
行。
您的会话未设置的原因是因为调用$row = mysqli_fetch_array($result);
$result
的内部数据指针已提前且您的$user = mysqli_fetch_assoc($result);
没有您期望的值,为什么你设置的所有会话变量都是空的。
答案 1 :(得分:1)
<强>的index.php 强>
session_start();
$row = mysqli_fetch_array($result);
if(mysqli_num_rows($result) > 0){
session_regenerate_id();
$user = mysqli_fetch_assoc($result);
$_SESSION['SESS_ID'] = $user['id'];
$_SESSION['SESS_UNAME'] = $user['username'];
$_SESSION['SESS_PASS'] = $user['password'];
session_write_close();
header("location:home.php");
exit();
}
在index.php上添加session_start()
答案 2 :(得分:1)
当Session变量没有存储数据时,导致此类结果的唯一问题。你的代码是写的。请检查index.php中的session_start():在顶部。