由于保存cookie不安全。 无论如何都要保持会话或设置会话到期,所以即使我关闭浏览器并再次打开它。它不会再次重定向我或再次要求我输入我的用户名或密码。
public function __construct(){
session_start();
$this->check_login();
}
public function check_login(){
if(isset($_SESSION['user_id'])){
$this->user_id = $_SESSION['user_id'];
$this->logged_in = true;
} else {
unset($_SESSION['user_id']);
$this->logged_in = false;
}
}
if (isset($_POST['submit'])){
$username = $database->escape_value($_POST['username']);
$password = $database->escape_value($_POST['password']);
$found_user = $user->authenticate($username,$password);
if ($found_user){
$session->login();
redirect_to('index.php');
} else {
$message = output_message("Invalid Username or Password <br />");
}
}else{
$username = "";
$password = "";
}
答案 0 :(得分:2)
http://www.php.net/manual/en/function.session-cache-expire.php
http://www.php.net/manual/en/session.configuration.php#ini.session.cookie-lifetime
制作此内容的更好方法是仅使用Cookie,因为setcookie包含超时
答案 1 :(得分:0)
会话仅保存在会话cookie中,因此如果用户清除cookie,会话将被删除。用户关闭浏览器时不会清除Cookie。根据Ali的回答,检查会话cookie的生命周期。
如果您真的有兴趣在不使用Cookie的情况下识别返回用户,请使用Google进行“识别不使用Cookie的用户”。你会发现有趣的事情要做,但没有像cookie一样可靠。
答案 2 :(得分:0)
当用户成功登录时,您必须在会话中保存user_id
。
if ($found_user){
$session->login();
$_SESSION['user_id'] = $username;
redirect_to('index.php');
}
并确保$username
是唯一的。