php的ini_set函数无法在类方法内使用吗?

 伟经理_469 发布于 2022-11-13 08:28

我想做一个‘一星期内自动登录’功能,
后端登录代码如下:`

class loginController extends corelibController
{

public function login()
{
    if($_POST['autoLogin']==1)
    {
        ini_set('session.gc_maxlifetime', "604800"); // 秒
        ini_set("session.cookie_lifetime","604800"); // 秒
    }
    session_start();
    if(strtolower($_SESSION['vCode'])!=strtolower($_POST['vCode']))
    {
        echo 'vCode_error';
        exit(0);
    }

    $model=new mongoModel('wind','users');
    $name=$model->findOne('name',$_POST['username']);
    if(!empty($name))
    {
        if($name['password']==$_POST['password'])
        {
                $_SESSION['username']=$_POST['username'];
                echo 'success';
        }
        else
            echo 'password_error';
    }
    else
    {
        echo 'user_error';
    }
}

}`

通过前端传来的‘autoLogin’值来判断用户是否选择了‘一周内自动登录’这个checkbox,如果选择,则更改session和保存了sessionid的cookie的最大保存时间为1个星期。但是我发现这样也不行,cookie的有效期依然为结束会话时销毁,但是我把: ini_set('session.gc_maxlifetime', "604800");
ini_set("session.cookie_lifetime","604800");
这两段代码放到项目入口文件里,cookie的有效期成功到了一个星期以后,这是为啥呢?
新手求问。

2 个回答
  • 这就涉及到了一个作用域的问题,要不你试试在设置cookie之前设置最大保存时间?

    2022-11-13 10:35 回答
  • http://php.net/manual/en/func...

    只是在该脚本里临时生效的,脚本运行结束后就恢复。

    客户端和服务器默认是通过sesssion_id握手的,你要保证session_id存在于客户端和服务器,一旦任何一方有做更改,再次访问就相当于又重新握手,之前握手的数据是不能直接访问到的。

    2022-11-13 10:35 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有