加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 正确使用session_set_cookie_params

发布时间:2020-12-13 21:39:42 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试使用“记住我”功能实现登录系统.这是我的登录页面: http://pastebin.com/q6iK0Mgy.在此我尝试使用session_set_cookie_params()扩展会话cookie(PHPSESSIONID)到期.但它不起作用. 代码中的相关部分:在此处执行内部if()循环,但session_set_cookie_
我正在尝试使用“记住我”功能实现登录系统.这是我的登录页面: http://pastebin.com/q6iK0Mgy.在此我尝试使用session_set_cookie_params()扩展会话cookie(PHPSESSIONID)到期.但它不起作用.

代码中的相关部分:在此处执行内部if()循环,但session_set_cookie_params(‘3600’)无效.我正在调用session_name(),因为它应该是session_set_cookie_params()的一个要求(根据php手册中的一条评论)

if ( isset($_POST["submit"]) ) 
 {
     session_name() ;
     echo "calling before checked " ;
     if ( $_POST["remember"] == "on") 
    {
       // extend expiration date of cookie
       session_set_cookie_params('3600');
       echo "<br/>calling after sessions_set_cookie_params" ;
    }
 } 
 require_once("includes/session.php"); //session start ?>

我希望我能够解释我想做什么.基本上我试图做的是延长session_cookie的到期时间.我完全错了吗?还有另一种方法可以达到同样的目的吗?

谢谢

解决方法

从来没有太老的答案权利?

所以,PHP是愚蠢的.如同,它不会做你认为有意义的事情.

session_set_cookie_param在您调用session_start的确切时刻之前不会执行任何操作.因此,如果您在调用会话开始后设置cookie参数,则为时已晚.如果您设置cookie参数但不调用session_start,则不会发生任何事情.

session_start也是一个有趣的野兽.它只会在第一次调用cookie时读取cookie数据,除非….你强制它写入,或者没有cookie开始.因此,如果没有cookie,它会写入cookie数据,客户端会保存您的会话.好极了!但是当cookie已经存在时,我们如何强制它写入,从而更新我们新的到期日?

因此,如果客户端上已存在cookie,则忽略所有session_set_cookie_param调用会产生这种奇怪的效果.更好的是,如果你明确地调用setcookie(session_name(),blah blah blah),php将会STILL不发出cookie.

所以,让我们强制php发出一个cookie.

选项1

这可以通过调用session_id来实现唯一不会破坏现有会话的值. http://php.net/session_id的文件说明了这一点

Note: When using session cookies,specifying an id for session_id() will always send a new cookie when session_start() is called,regardless if the current session id is identical to the one being set.

session_id($_COOKIE[session_name()]);

所以无论如何早上6点,我还没有睡觉,如果不是几年前你可能想出这几个月,但是到底怎么样,也许我会在我生命的2或3个小时内拯救别人,我永远不会回来.哈哈.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读