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

时间:2018-01-12 08:57:18

标签: php session

用例:

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

我的逻辑

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

逻辑是如果未设置$_SESSION['userID'],则用户未登录,因为public static function isLogged(){ if(!isset($_SESSION['userID'])){ header(':Location: login.php'); die(); } } 变量在登录时设置。我想出了以下内容......

方法

isLogged()

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

我的问题/问题

以上问题是我无法休息,因为:

  1. 这种方法似乎效率低下......即有更好的方法(更有效的方法)?
  2. 我不确定是否有任何未经授权的用户可以执行查看页面的工作
  3. 我可能在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; } 方法中遗漏了一些关键信息?
  4. 附加信息

    登录方式

    strategy_bools_or_ints = st.booleans() | st.integers()
    

    如果经验丰富的编码人员可以通过此快速扫描,我将非常感激。非常感谢

1 个答案:

答案 0 :(得分:4)

  
      
  1. 这种方法似乎效率低下......即有更好的方法(更有效的方法)?
  2.   

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

  
      
  1. 我不确定是否有任何未经授权的用户可以执行查看页面的工作
  2.   

只有他们可以劫持授权用户的会话。但是,就用户身份验证而言,几乎所有的赌注都是关闭的。劫持会话将要求他们获取其他用户的cookie。如果您使用SSL加密连接,那么您将尽可能安全。

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

不,那就是它的全部内容。