我遇到会话数据消失的问题。虽然我不会说它与代码无关,但条件似乎是那样。登录后,我可以在会话数据存储中看到存储在会话文件中的会话数据。 3分钟后,如果没有对浏览器执行任何操作,会话文件中的数据将消失。我使用的是CentOS 6.8和PHP 5.6.0。
session_start();
if(($_REQUEST['login_btn'] || $_REQUEST['username'] || $_REQUEST['password']) && !$_SESSION['auth']) {
if(!$_REQUEST['username'] && !$_REQUEST['username']) {
header("Location: /?msg=bp");
exit();
}
if($_SESSION['auth']!=1)
{
if(!$conn)
$conn=mysql_conn();
$sql="select pid,CONCAT(fname, ' ', lname) as pname,email1,password FROM people WHERE email1 = '".addslashes(str_replace(" ","",trim($_REQUEST['username'])))."'";
$res=mysql_query($sql,$conn);
if(mysql_num_rows($res)<1) {
header("Location: /?msg=bp");
exit();
}
else {
$row=mysql_fetch_array($res);
$user=$row['email1'];
$pass=$row['password'];
if($pass != $_REQUEST['password']){
header("Location: /?msg=bp");
}
else {
$_SESSION['pid'] = $row['pid'];
$_SESSION['email'] = $user;
$_SESSION['pname'] = $row['pname'];
$_SESSION['auth'] = true;
}
}
}
}
相关的php.ini设置:
session.save_handler = files
session.save_path = "/data/session"
session.auto_start = 0
session.cookie_lifetime = 0
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 0
session.cache_limiter = nocache
非常感谢任何帮助!