繁体   English   中英

如果多次刷新页面,为什么未设置PHP会话

[英]Why PHP session unset if more than one time refresh page

这是我的代码,用于检查用户是否登录:

if (!$_SESSION['userInfo']['name'])
{
    Redirect('login.php');
}

重定向页面的代码是:

function Redirect($url)
{
    ob_start();
    header('location:'.$url);
    exit;
}

当我一次按下刷新按钮时,此代码正常工作,但是当我多次按下刷新按钮时,则未设置会话变量并重定向到登录页面。

我正在使用此代码和API,需要大约5-10秒的时间来加载页面。如果我在加载之前按了刷新按钮,那就发生了。

可能是什么问题?

尝试检查empty()

if (empty($_SESSION['userInfo']['name']))
{
    Redirect('login.php');
}

注意:请确保在登录前没有在$_SESSION['userInfo']['name']设置任何值。 另外,登录后也必须清除它。

尝试使用isset()函数(参考: http : //www.php.net/isset ):

if (!isset($_SESSION['userInfo']['name']))
{
    Redirect('login.php');
}

并且确保在有效会话期间不要清除$_SESSION变量,并且仍然要确保在用户注销时将其清除。

也许仍然使用:

if (!isset($_SESSION['userInfo']['name']))
{
    header('Location: login.php');
}

您可能从代码段中省略了代码,但是确定要开始会话吗?

session_start()
if (!isset($_SESSION['userInfo']['name']))
{
    Redirect('login.php');
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM