所以,我正在这个网站上工作:
http://www.funkydictionary.com/signup.php
而且我遇到了一个非常奇怪的问题,我以前没有遇到过,到目前为止,我有一个登录页面和一个注册页面,服务器语言是 PHP,我通过会话传递错误和成功消息,所以,当用户尝试登录或注册,设置成功或失败 $_SESSION。
然后他被重定向到注册页面,在那里他的错误/成功将被显示。
现在由于某些奇怪的原因,无法设置会话,并且我注意到在刷新浏览器之前也不显示图标?
发生这种情况后,一切正常,但如果浏览器关闭,因此所有会话都未设置,是否会出现同样的问题?
我猜这与服务器配置有关?
任何帮助表示赞赏
编辑1:
这包含在每一页的顶部:
<?php
session_start();
if(isset($_SESSION['login']) && $_SESSION['login'] == 1) {
$error_message = "";
$success_message = "";
$now = time(); // checking the time now when home page starts
if($now > $_SESSION['expire'])
{
session_unset();
session_destroy();
global $loggedIn;
$loggedIn = null;
$error_message = 'Your session has expired, please login again.<br />';
session_start();
$_SESSION['error'] = $error_message;
died($success_message, $error_message, '/login.php');
}
else {
global $loggedIn;
$loggedIn = 1;
}
}
?>
编辑2:
会话何时/如何到期?
登录时我设置了一个会话 ['start'] = time(); 和 ['expire'] = 开始 + 60*60
这是代码
session_start();
$_SESSION['login'] = "1";
$_SESSION['username'] = $row['username'];
$_SESSION['start'] = time();// taking now logged in time
$_SESSION['expire'] = $_SESSION['start'] + (60 * 60) ; // ending a session in 30 minutes from the starting time
global $loggedIn;
$loggedIn = 1;
$success_message = 'You have logged in as ' . $row['username'];
died($success_message, $error_message, '/login.php');