网站的某些区域仅限会员使用,如果用户登录显示页面,则重定向到登录/注册表单。
我在$_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;
}
方法中遗漏了一些关键信息?登录方式
strategy_bools_or_ints = st.booleans() | st.integers()
如果经验丰富的编码人员可以通过此快速扫描,我将非常感激。非常感谢
答案 0 :(得分:4)
- 这种方法似乎效率低下......即有更好的方法(更有效的方法)?
醇>
不,会话变量相当有效。这是正常的做法。
- 我不确定是否有任何未经授权的用户可以执行查看页面的工作
醇>
只有他们可以劫持授权用户的会话。但是,就用户身份验证而言,几乎所有的赌注都是关闭的。劫持会话将要求他们获取其他用户的cookie。如果您使用SSL加密连接,那么您将尽可能安全。
- 我可能在isLogged()方法中遗漏了一些关键信息?
醇>
不,那就是它的全部内容。