php的ini_set函数无法在类方法内使用吗?
黄舟
黄舟 2017-04-11 10:37:59
[PHP讨论组]

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

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)
巴扎黑

http://php.net/manual/en/func...

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

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

PHPz

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号