2014-10-19 56 views
0

嗨,我用下面登录/注册系统在我的网站检查验证的用户活跃在会话PHP

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,微博登录或谷歌然后我在会话设定值,如下

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

取代你的||运算符&&或$ _SESSION ['auth_yes_exm']在通过FB,Twitter,Google登录时也设置了这个变量 – 2014-10-19 08:33:45

+0

完成...谢谢....有时候头脑会像anythng一样吹...这么小的改变:) – Gags 2014-10-19 08:37:54

回答

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 
} 

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