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


Check if authenticated user is active in session 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、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会话设置为不同的变量,因为我要求它也在其他地方使用。

使用

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
}

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