我在查找页面重定向后保持简单的会话数据值时遇到问题。函数检查通过Post发送的用户数据,如果它与数据库中的值匹配,它会将会话数据设置为值并重定向到另一个页面:
if ($login_ok) {
//set session data
$_SESSION ['online'] = 1;
$_SESSION ['userid'] = $id;
$_SESSION ['username'] = $name;
//redirect to new page
redirect('start.php');
}
在新页面代码中,未设置会话数据。简单测试返回空值,就好像会话数据没有设置:
echo 'Session Login Status: ' . $_SESSION ['online'];
echo 'Session UserID: ' . $_SESSION ['userid'];
echo 'Session Username: ' . $_SESSION ['username'];
使用上述echo语句替换重定向可以正常工作。会话数据是否已设置并且在加载任何页面数据之前激活重定向是否意味着未分配会话变量?
为确保活动会话始终可用,包含文件包含以下代码:
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
知道这里的问题是什么吗?
非常感谢, 千瓦
答案 0 :(得分:1)
使用
检查会话是否在进度之前设置if isset($_SESSION ['online']) and
isset($_SESSION ['userid']) and
isset($_SESSION ['username'])
{
echo 'Session Login Status: ' . $_SESSION ['online'];
echo 'Session UserID: ' . $_SESSION ['userid'];
echo 'Session Username: ' . $_SESSION ['username'];
} else {
echo 'Redirect to login or Session expired';
}
而不是重定向尝试此
$uid = $_SESSION['USERID'];
if (isset($uid) || $uid != NULL)
{
if (!headers_sent()) {
header('Location:main.php');
exit;
}
else {
?>
<script>window.location = 'main.php';</script>
<?php
}
}
答案 1 :(得分:0)
这似乎是服务器而不是代码问题。在localhost服务器上运行代码可以正常工作。希望这对遇到类似问题的人有所帮助。
说,我不知道如何设置远程服务器以允许会话数据。服务器有基于浏览器的网络管理软件cPanel,有什么建议吗?