首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP检查用户是否可以访问页面的简单方法

PHP检查用户是否可以访问页面的简单方法
EN

Stack Overflow用户
提问于 2018-01-12 16:57:18
回答 1查看 1.1K关注 0票数 3

使用案例:

网站的一些区域仅限会员使用,如果用户登录到显示页面,则重定向到登录/注册表单。

我的逻辑

我在Users()类中创建了一个方法,用于检查是否设置了$_SESSION['userID']

逻辑是,如果没有设置$_SESSION[],则用户不会登录,因为$_SESSION['userID']变量是在登录时设置的。我想出了下面的.

方法

代码语言:javascript
复制
public static function isLogged(){
    if(!isset($_SESSION['userID'])){
        header(':Location: login.php');
        die();
    }
}

考虑到上述情况,我只需将isLogged()方法添加到页面的开头,如果未设置$_SESSION('userID')超级全局,则用户将被重定向。

我的问题/问题

上面的问题是我不能让我的大脑休息,因为:

  1. 该方法似乎效率低下...即是否有更好的(更有效的)方法?
  2. 我不确定是否有未经授权的用户可以执行的解决方法来查看页面
  3. 我可能在isLogged()方法中遗漏了一些关键信息?

更多信息

登录方法

代码语言:javascript
复制
public function login_user($newEmail, $newPword)
{
    global $db;
    $this->email = $newEmail;
    $this->password = $newPword;
    $sql = "SELECT * FROM bru_users WHERE email = :email AND password = :pword";
    $stmnt = $db->prepare($sql);
    $stmnt->bindValue(':email', $newEmail);
    $stmnt->bindValue(':pword', $newPword);
    $stmnt->execute();
    $is_registered = $stmnt->rowCount();
    if ($is_registered > 0) {
        $users = $stmnt->fetchAll();
        foreach ($users as $user) {
            $userInfo[] = array('userID' => $user['userID'], 'email' => $user['email'], 'userName' =>$user['userName'], 'firstname' => $user['firstname'],
                'lastname' => $user['lastname'], 'reg_date' => $user['registration_date']);
        }
        if(isset($userInfo)){
            foreach ($userInfo as $start) {
               $_SESSION['userID'] = $start['userID'];
               $_SESSION['email'] = $start['email'];
               $_SESSION['userName'] =$start['userName'];
               $_SESSION['firstname'] = $start['firstname'];
               $_SESSION['lastname'] = $start['lastname'];
            }
        }
    } else {
        return false;
    }
    return true;
}

我将非常感谢,如果一个更有经验的程序员可以通过此快速扫描。非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-12 17:04:48

  1. 这个方法似乎效率不高……也就是说,有一个更好的(更有效的)方法--

不,会话变量是相当有效的。这是正常的方法。

  1. 我不确定未经授权的用户是否可以执行任何解决方法来查看页面

只有在他们可以劫持授权用户的会话的情况下。但是,在用户身份验证方面,几乎所有的赌注都落空了。劫持会话需要它们获取其他用户的cookie。如果你用SSL加密你的连接,你就能得到最安全的连接。

  1. 我可能遗漏了isLogged()方法中的一些关键信息?

不,这就是全部。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48222663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档