设置了session的生存时间,重启浏览器之后还是需要重新登录
来源:6-2 会员中心功能实现
no4990
2017-04-23
设定了session的生存时间,也输出了生存时间的数值,数值也正确没有错误,但是关闭浏览器之后需要重新登录。
输出的$lifetime的值就是7*24*3600的结果,用die()来检查是否进入了循环,也没问题。

登录部分的代码如下:
User.php(用户表数据模型)
/**
* 用户登录
* @param $data
* @return bool
*/
public function login($data)
{
$this->scenario = "login";//场景
if ($this->load($data) && $this->validate()) {
//var_dump($data);exit(); //test: 测试数据
$session = Yii::$app->session;//注册session组件
if($data['User']['rememberMe']){
//如果选择了自动登录
$lifetime = $this->rememberMe ? 7*24*3600 : 0; //7天
session_set_cookie_params($lifetime); //设置生存时间
//die('设置session生存时间成功!');//test :测试是否设置了session生存时间
}
//如果没有选择自动登录,则不进行时间的设定
/** 进行用户数据的查询 START */
//默认用用户名登录
$loginname = "username";
if (preg_match('/@/', $this->loginname)) {
//如果用邮箱登录
$loginname = "useremail";
}
//数据查询
$data = self::find()
->where($loginname.' = :loginname and userpass = :pass', [
':loginname' => $this->loginname,
':pass' => md5($this->userpass)
])
->one();
/** 进行用户数据的查询 END */
//var_dump($data->userid);exit(); //test: 测试数据
//设置session的值
$session['userid'] = $data->userid;//用户id,最好用这个做标识
$session['username'] = $data->username;//用户名
$session['loginname'] = $this->loginname;//将用户名传入,因为是唯一的,所以可以做标识
$session['isLogin'] = 1;
return (bool)$session['isLogin'];
}
return false;
}写回答
1回答
-
Jason
2017-04-23
直接设置 setcookie(session_name(),session_id(),time()+$lifetime);
042017-06-23
相似问题