检查uniqid会话

时间:2011-05-18 11:21:48

标签: php session cookies unique-id

对于用户身份验证,我的客户端重定向到服务器并获取用户数据,并将其存储在客户端的php本机会话中。在此过程中,服务器重定向回相同的请求URL,因此如果没有响应数据,则客户端将不会有任何会话,并且我的脚本将以重定向循环结束,因为只有在找不到会话时才会检查重定向到服务器。

现在为了避免这种情况,我使用uniqid('prefix_')函数在第一次流后创建一个随机会话。但如果有人刷新页面,请求应再次转到服务器进行身份验证。

为此,我正在检查会话cookie值。如果cookie有我给定的前缀(在uniqid中给出),那么它不是有效的会话并重定向到服务器。我想知道这个选项有多可靠?我还有其他解决方案吗?

更新: 这是我的validSession函数的样子:

public function validSession() {
if ($sessionCookie !== null && substr($sessionCookie,0,7) !== 'prefix_')
return true;
return false;
}

因此,如果会话cookie包含用于在没有来自服务器的数据的情况下创建随机会话的前缀,则此函数将返回false,我将决定重定向到服务器以进行用户会话。

1 个答案:

答案 0 :(得分:0)

听起来像流量控制问题。如果登录失败,请不要重定向。

@session_start();
$user = Auth::login($username, $pwd);
if (!empty($user))
{
  $_SESSION['auth_user'] = $user;
  session_write_close();
  header('Location: '.$_REQUEST['next']);
}
else
{
  header('Location: '.Auth::STANDARD_LOGIN_URL);
}

此示例使用psuedo Auth类,使用静态登录方法(失败时返回用户或false / null),以及定义登录位置的常量。