【问题标题】:Check if authenticated user is active in session php检查经过身份验证的用户是否在会话 php 中处于活动状态
【发布时间】:2014-12-14 10:13:28
【问题描述】:

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

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 或 google 登录时,我在会话中设置值如下

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 会话设置为不同的变量,因为我还需要在其他一些地方使用它。

【问题讨论】:

  • 替换你的||通过 FB、twitter、google 登录时,带有 && 或 $_SESSION['auth_yes_exm'] 的运算符也设置此变量
  • 完成了...谢谢....

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


【解决方案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
}

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

【讨论】:

    猜你喜欢
    • 2012-12-08
    • 2011-11-09
    • 1970-01-01
    • 2017-07-06
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    相关资源
    最近更新 更多