使用案例:
网站的一些区域仅限会员使用,如果用户登录到显示页面,则重定向到登录/注册表单。
我的逻辑
我在Users()
类中创建了一个方法,用于检查是否设置了$_SESSION['userID']
。
逻辑是,如果没有设置$_SESSION[]
,则用户不会登录,因为$_SESSION['userID']
变量是在登录时设置的。我想出了下面的.
方法
public static function isLogged(){
if(!isset($_SESSION['userID'])){
header(':Location: login.php');
die();
}
}
考虑到上述情况,我只需将isLogged()
方法添加到页面的开头,如果未设置$_SESSION('userID')
超级全局,则用户将被重定向。
我的问题/问题
上面的问题是我不能让我的大脑休息,因为:
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;
}
我将非常感谢,如果一个更有经验的程序员可以通过此快速扫描。非常感谢
发布于 2018-01-12 17:04:48
不,会话变量是相当有效的。这是正常的方法。
只有在他们可以劫持授权用户的会话的情况下。但是,在用户身份验证方面,几乎所有的赌注都落空了。劫持会话需要它们获取其他用户的cookie。如果你用SSL加密你的连接,你就能得到最安全的连接。
不,这就是全部。
https://stackoverflow.com/questions/48222663
复制相似问题