带有ob_start和Session的登录脚本,无需登录即可刷新



我有一个问题与我的登录脚本:我有这3个脚本

index . php

ob_start();
session_start();
include ('config.php');
include ('home.php');
ob_end_flush();



home。

 if($_SESSION['logged_in']) {
 echo $_SESSION['nome']; 
 } else { ?>
 <form name="login" action="checklogin.php";> 
 ...
 <?php } ?>



checklogin.php

ob_start();
session_start();
include("config.php");
if(isset($_POST['Submit'])) {
...
$_SESSION['logged_in'] = TRUE;
header("Location: http://$root");
die();
}
ob_end_flush();

我的问题是:当我第一次尝试登录我的页面刷新没有显示会话。为什么? ?如果我第二次尝试关闭并重新打开浏览器或日志,它将显示会话。为什么?我该怎么办?

您遇到的问题是,由于来自PHP的会话cookie的生命周期,您的PHP会话仍然处于活动状态。查看这里的讨论,了解如何使用$_SESSION变量来保存时间戳,然后检查时间戳以查看是否已经过了一定的时间。

或者,同样的讨论还提供了关于修改PHP服务器以使用垃圾收集和cookie生命周期设置来设置默认会话生命周期的详细信息。

最新更新