gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 00:55:05 25 4
gpt4 key购买 nike

用例:

网站的某些区域仅限成员(member)使用,如果用户已登录则显示页面,否则重定向至登录/注册表格。

我的逻辑

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

逻辑是,如果 $_SESSION[] 未设置,则用户未登录,因为 $_SESSION['userID'] 变量设置为登录。我想出了以下...

方法

public static function isLogged(){
if(!isset($_SESSION['userID'])){
header(':Location: login.php');
die();
}
}

考虑到以上,我只是在页面的开头添加了isLogged()方法,如果$_SESSION('userID')超全局不是设置用户被重定向。

我的问题/问题

上面的问题是我无法安心休息,因为:

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

附加信息

登录方式

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;
}

如果更有经验的编码人员可以快速浏览一下,将不胜感激。非常感谢

最佳答案

  1. The method seems inefficient...i.e there is a better (more efficient way of doing this)?

不, session 变量相当有效。这是执行此操作的常规方法。

  1. Im unsure whether there are any work arounds that unauthorized users can perform to view the page

只有当他们可以劫持授权用户的 session 时。但就用户身份验证而言,几乎所有的赌注都落空了。劫持 session 需要他们获取其他用户的 cookie。如果您使用 SSL 加密您的连接,您将尽可能安全。

  1. I'm perhaps missing some critical info inside the isLogged() method?

不,仅此而已。

关于PHP检查用户是否可以访问页面的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48222663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com