请选择 进入手机版 | 继续访问电脑版

[PHP编程] PHP 修改SESSION的生存时间案例详解

  [复制链接]
查看353 | 回复83 | 2021-9-13 07:53:17 | 显示全部楼层 |阅读模式

需求背景:

用户盼望 他登录之后,欣赏 器就帮他记住登录状态,如许 他就不用每次进入的时间 ,都必要 登录一次。

session过期时间:

假如 我们没有设置session的天生 时间,在设置 文件中默认的生存时间是1440秒

也就是说session的生存时间是24分钟,这里大概 有些人会有如许 的疑问:

为什么我登录之后,24分钟之后,并没有退出呀?

着实 在24分钟之后,session是失效的,为什么用户没有退出是由于php的回收机制造成的。

PHP 修改SESSION的生存时间案例详解

PHP 修改SESSION的生存时间案例详解

在设置 文件php.ini中,你可以找到这两个设置 项,上边的解释 基本是一样,大概意思就是说:

"回收机制"在每个session初始化发生是一个概率变乱 ,这个概率是由以下公式得出的:

gc_probability除以gc_divisor。假如 gc_probability值为1,gc_divisor值为100,那么触发“回收机制”的概率为1%。

就意味着大概 有100次php哀求 ,大概 才会有一次触发“回收机制”的大概 性。以是 说假如 session已颠末 期了,但是没有

触发到“回收机制”,session文件还没有被删除,那session就是还有用 的。

假如 必要 很精准的触发“回收机制”,让session已过期立刻 删除,就把以上两个值都设置为1.

但是如许 会极其影响PHP性能。

sessionID在cookie中的生存时间:

一样平常 我们关闭欣赏 器,假如 我们没有单独设置sessionID过期时间的话,欣赏 器就会把cookie中对应的sessionid删除。

我们没有关闭欣赏 器,session的时间到了,也是失效的。但是由于php的回收机制(参考下面文章:PHP session详解),大概 不会立马就失效。

比如:

  1. <?php
  2. session_start();
  3. $_SESSION["username"] = "peter";
  4. echo "登记的用户名为:".$_SESSION["username"];
  5. ?>
复制代码

假如 我们实行 这段代码的时间 ,我们在Chrome欣赏 器下的Application下查看我们刚才访问的网站的sessionid的过期时间

1969-12-31就阐明 是没有设置缓存时间,关闭欣赏 器则会被删除。

PHP 修改SESSION的生存时间案例详解

在“Settings”->"Advanced"->"Content settings"->"Cookies"->"See all cookies and site data"选择你要查看的网站也可以看到session的相干 信息。

PHP 修改SESSION的生存时间案例详解

我们把以上代码修改为下:

  1. <?php
  2. $lifeTime = 24 * 3600;
  3. session_set_cookie_params($lifeTime);
  4. session_start();
  5. $_SESSION["username"] = "peter";
  6. echo "登记的用户名为:".$_SESSION["username"];
  7. ?>
复制代码

这时就可以望见 我们设置的session在cookie中的失效时间修改了

PHP 修改SESSION的生存时间案例详解

设置session的生存时间

1.最有用 的方法 修改php.ini中

  1. #session的超时时间
  2. session.gc_maxlifetime = 1440
复制代码

2.通过php去修改这个值

  1. <?php
  2. $Lifetime = 3600;
  3. $DirectoryPath = "./tmp";
  4. is_dir($DirectoryPath) or mkdir($DirectoryPath, 0777);
  5. //是否开启基于url传递sessionid,这里是不开启,发现开启也要关闭掉
  6. if (ini_get("session.use_trans_sid") == true) {
  7. ini_set("url_rewriter.tags", "");
  8. ini_set("session.use_trans_sid", false);
  9. }
  10. ini_set("session.gc_maxlifetime", $Lifetime);//设置session生存时间
  11. ini_set("session.gc_divisor", "1");
  12. ini_set("session.gc_probability", "1");
  13. ini_set("session.cookie_lifetime", "0");//sessionID在cookie中的生存时间
  14. ini_set("session.save_path", $DirectoryPath);//session文件存储的路径
  15. session_start();
  16. ?>
复制代码

注意 :假如 你的网站自定义了session_save_path,你就必要 给session.gc_probability设置值,否则的话,你的session产生的sessionID文件永世 不会被删除。

3.采用增长 cookie的时间,变相的增长 session的时间

  1. <?php
  2. /**
  3. * 下面只是设置了保存sessionid的那个时间,这样的结果是关闭浏览器后session仍可以用
  4. * 实际并没有改变session的生存时间,如果session已经过期,这也就没有意义了
  5. */
  6. //只会在用户第一次访问的时候设置保存sessionid的那个cookie的过期时间
  7. $lifetime=600;
  8. session_set_cookie_params($lifetime);#注意到放到start的前面
  9. session_start();
  10. //每次都设置保存sessionid的那个cookie的过期时间
  11. $lifetime=600;
  12. session_start();
  13. setcookie(session_name(),session_id(),time()+$lifetime);
  14. ?>
复制代码

//同上,每次都会设置

注意 :个人以为 ,要么设置第二种方法,要么就把第一种和第三种想联合 ,如许 才能从根本上办理 题目 。

  1. <?php
  2. $lifetime=86400;
  3. session_set_cookie_params($lifetime);
  4. session_start();
  5. session_regenerate_id(true);
  6. ?>
复制代码

参考链接:

https://www.cnblogs.com/siqi/p/3659702.html

https://www.cnblogs.com/ginikeer/p/4170577.html

到此这篇关于PHP 修改SESSION的生存时间案例详解的文章就先容 到这了,更多相干 PHP 修改SESSION的生存时间内容请搜索 脚本之家从前 的文章或继续欣赏 下面的相干 文章盼望 大家以后多多支持脚本之家!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

avatar 公路美学 | 2021-9-13 09:29:38 | 显示全部楼层
论坛人气好旺!
回复

使用道具 举报

avatar 七七小嗳 | 2021-9-13 12:46:49 | 显示全部楼层
关注一下!
回复

使用道具 举报

avatar 123457227 | 2021-9-19 06:05:19 | 显示全部楼层
好东西,学习学习!
回复

使用道具 举报

avatar 123457462 | 2021-9-19 14:14:17 | 显示全部楼层
收藏了,admin楼主加油!
回复

使用道具 举报

avatar 千无情实 | 2021-9-21 01:49:37 | 显示全部楼层
这么版块的帖子越来越有深度了!
回复

使用道具 举报

avatar 白云苍狗N | 2021-9-21 10:10:24 | 显示全部楼层
以后要跟admin楼主好好学习学习!
回复

使用道具 举报

avatar 海鑫木业 | 2021-10-3 08:11:54 | 显示全部楼层
我和我的小伙伴都惊呆了!
回复

使用道具 举报

avatar 123457044 | 2021-10-6 10:20:40 | 显示全部楼层
看在admin楼主的面子上,认真回帖!
回复

使用道具 举报

avatar 尔己乡变她 | 2021-10-8 00:19:58 | 显示全部楼层
你觉得该怎么做呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则