检查身份验证用户是否在会话php中处于活动状态

时间:2014-10-19 07:58:25

标签: php session google-oauth twitter-oauth facebook-oauth

您好我在我的网站上使用以下登录/注册系统

1. Login via website (i.e. example.com)
2. Login via Facebook
3. Login via Twitter
4. Login via Google

现在,当用户通过example.com登录时,我将会话中的值设置为

session_start()
$_SESSION['auth_yes_exm'] = "Username from mySQL DB"

当用户通过FB,Twitter或谷歌登录时,我在会话中设置值如下

session_start()
$_SESSION['oauth_user'] = "Oauth Username"

现在,有一个页面Orders,我检查用户是否经过身份验证,然后只向他/她显示订单详细信息,它适用于以下内容:

session_start(); 
if(!(isset($_SESSION['auth_yes_exm']) && $_SESSION['auth_yes_exm']!='')){
   header('location: login.php');
   exit();
 }

我如何检查Oauth用户是否已登录并向他显示订单明细?

我尝试如下,但它始终重定向到login页面

session_start(); 
if(!(isset($_SESSION['auth_yes_exm']) && $_SESSION['auth_yes_exm']!='') || 
!(isset($_SESSION['oauth_user']) && $_SESSION['oauth_user']!='')){
   header('location: login.php');
   exit();
 }

请让我离开这个。我将Oauth会话设置为不同的变量,因为我还要求它在其他地方使用。

1 个答案:

答案 0 :(得分:1)

使用

if($_SESSION['auth_yes_exm'] || $_SESSION['oauth_user']) {
    //Show the page
}

设置当您分配给其他索引时不希望将用户作为null登录的索引,或者使用它:

if(
    (array_key_exists('auth_yes_exm', $_SESSION) && $_SESSION['auth_yes_exm']) || 
    (array_key_exists('oauth_user', $_SESSION) && $_SESSION['oauth_user'])
) {
    //Show the page
}

将避免未定义的偏移警告,并要求您一次只定义一个索引。