Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 即使在浏览器关闭后,是否仍要保持会话?_Php_Session_Cookies - Fatal编程技术网

Php 即使在浏览器关闭后,是否仍要保持会话?

Php 即使在浏览器关闭后,是否仍要保持会话?,php,session,cookies,Php,Session,Cookies,因为保存cookie是不安全的。 是否有保留会话或设置会话到期的方法,以便我关闭浏览器并再次打开它。它不会再次重定向我,也不会再次要求我输入用户名或密码 public function __construct(){ session_start(); $this->check_login(); } public function check_login(){ if(isset($_SESSION['user_id'])){ $this->user_id = $_SESSION['use

因为保存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 = "";
}
public function\uuuu construct(){
会话_start();
$this->check_login();
}
公共功能检查\u登录(){
如果(isset($\u会话['user\u id'])){
$this->user\u id=$\u会话['user\u id'];
$this->logged_in=true;
}否则{
取消设置($_会话['user_id']);
$this->logged_in=false;
}
}
如果(isset($_POST['submit'])){
$username=$database->escape_值($_POST['username']);
$password=$database->escape_值($_POST['password']);
$found\u user=$user->authenticate($username,$password);
如果($found\u用户){
$session->login();
将_重定向到('index.php');
}否则{
$message=输出消息(“无效用户名或密码
”); } }否则{ $username=“”; $password=“”; }


更好的方法是只使用cookie,因为setcookie包含超时

会话只保存在会话cookie中,因此如果用户清除cookie,会话将被删除。当用户关闭浏览器时,Cookie不会被清除。根据Ali的回答,检查会话cookie的生存期


如果你真的有兴趣在不使用cookies的情况下识别返回的用户,那么谷歌将为“在不使用cookies的情况下识别用户”提供帮助。你会发现有趣的事情要做,但没有什么比cookie使用更可靠。

当用户成功登录时,你必须在会话中保存
user\u id

if ($found_user){
    $session->login();
    $_SESSION['user_id'] = $username;
    redirect_to('index.php');
} 

并确保
$username
是唯一的。

保存一个会话ID未过期的cookie是一种方法。没有比这更安全的方法来做你想做的事了。我是我当前的代码。每次我关闭浏览器并再次打开时,它都会再次要求登录。即使我的浏览器关闭了,还有什么方法可以让我登录网站?你可以为你的cookie设置一个过期日期。这样,即使你关闭并重新打开浏览器,它也会保持不变。这就是我不知道该怎么做的。你能告诉我如何使用上面的代码吗?谢谢。@Ali发布了一些应该有帮助的链接。