php修改session生存时间,修改session的过期(生存)时间

以下我以php为例,万变不离其宗,希望对大家都有用吧。

session与cookie:

了解过两者的众所都知道,有些信息保存到cookie,有些出于安全问题就不能直接存到浏览器,这就要用到session了。然而对于浏览器,一般都是默认20-30分钟自动销毁或者关闭浏览器就会销毁。这显示是很头疼的事情,比如我们要实现用户登陆功能,关闭浏览器就要重新登陆,这搞什么鬼?所以我们要去试图改变它们。网上众说纷纭,你可以选择去修改默认配置文件,如php为例,修改php.ini的函数。但是染念却不喜欢修改修改默认,也在网上看到某些程序员是没有权限修改的,所以我们需要做到如何不修改默认文件达到这样的功能。

我们可能在网上看到这样的一例子:

$lifeTime = 24 * 3600;

session_set_cookie_params($lifeTime);

1.通过cookie的有效时间来设置session,我想说,这只是一部分,因为设置cookie有效期没有错,但是你没有传值,怎么达到修改session的生存时间呢。

2.虽然在你执行了一次后,真的session是24小时了,但是当你关闭浏览器后,再打开,session仍然还是需要你重新输入,因为浏览器找不到你的session的id啊...

如何设置session的生存时间呢?要做的就是把session传给cookie,由cookie给我们保存:

session_start();

isset($PHPSESSID) ? session_id($PHPSESSID) : $PHPSESSID = session_id();

setcookie('PHPSESSID', $PHPSESSID, time()+86400, "/");PHP session工作原理 以下以cookie传输PHPSESSID描述。客户端请求一个php的服务端地址。

服务端收到请求,此次php脚本中包含session_start()。

服务端会生成一个PHPSESSID。(默认session存储方式为session.save_handler=files,文件形式存储。生成的session文件名规则即为sess_PHPSESSID,session文件存在session.save_path中。)

服务端响应首部Response Headers:Set-Cookie:PHPSESSID=37vjjasgjdv2ouk1uomhgqkv50;

path=/。在客户端生成一个cookie保存此PHPSESSID。此时,客户端的cookie里面包含了PHPSESSID,之后客户端的每次请求首部Request Headers:Cookie:PHPSESSID=37vjjasgjdv2ouk1uomhgqkv50。服务端之后每次接收到客户端的请求就都能根据这个PHPSESSID来找到服务端的session文件,通过对这个session文件的读写操作即实现了session的超全局变量属性。

如果客户端禁用了cookie,由于无法使用cookie传递PHPSESSID,那么客户端每次请求,服务端都会重新建立一个session文件,而无法通过通过PHPSESSID来重用session文件,所以session也就失效了。

这种情况可以设置session.use_trans_sid来传输PHPSESSID,具体实现方式与cookie的区别就是将PHPSESSID通过HTTP的GET传输。每次请求的地址里面都会补全PHPSESSID参数”url?PHPSESSID=37vjjasgjdv2ouk1uomhgqkv50”来实现。

顾名思义,phpsessid就是当前会话id,session_id($PHPSESSID)达到当前会话,不然没存在,就要建立一个。然后再通过设置cookie(其实你打开看cookie,就是有PHPSESSID存在,而我们修改了它的存在时间而已),这样我们才能实现session在你想要的时间内过期,即使浏览器关闭了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399063.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

让nginx支持thinkphp rewrite模式

为什么80%的码农都做不了架构师?>>> Nginx环境在Nginx低版本中,是不支持PATHINFO的,但是可以通过在Nginx.conf中配置转发规则实现:在nginx配置文件中添加 location / { if (!-e $request_filename) { rewrite ^(…

WPS怎样设置多级标题(如四级标题)

WPS期初,乍一看最多只能设置三级标题。 怎样设置四级以上标题呢? 这里以设置四级标题为例: 点击‘视图’->大纲, 假如,现在2.3.3这一行是三级标题: 在下拉框里选择‘4级’就可以了。 现在可以回到普通页面上&#x…

tomcat关闭后线程依然运行解决办法

tomcat关闭后线程依然运行解决办法,设置线程为守护线程 守护线程与非守护线程 最近在看多线程的Timer章节,发现运用到了守护线程,感觉Java的基础知识还是需要补充。 Java分为两种线程:用户线程和守护线程 所谓守护线程是指在程序运…

一维有限元法matlab,有限元matlab研究.ppt

* 有限元方法——介绍 有限元方法是数值求解偏微分方程边值问题的一种方法,此方法首先于20世纪50年代初由工程师提出,并用于求解简单的结构问题。有限元方法是这一种系统的数值方法,并奠定其数学基础,是在60年代中期以冯康先生为代…

matlab实现主成分分析(遥感图像处理)

数据说明:采用的数据源是从别人那里拷的2012年全年的Sea Surface Temperature(海标温度,SST)数据,一直想找一份比较好的主成分分析数据,也没找到。 Matlab自身有主成分分析的函数princomp,其中返…

Struts1和Struts2的区别和对比(完整版)(转)

Struts1和Struts2的区别和对比(完整版)(转) Struts1和Struts2的区别和对比:Action 类: • Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口,而struts2的Action是接口。 • Str…

SQL Server中关于跟踪(Trace)那点事

前言 一提到跟踪俩字,很多人想到警匪片中的场景,同样在我们的SQL Server数据库中“跟踪”也是无处不在的,如果我们利用好了跟踪技巧,就可以针对某些特定的场景做定向分析,找出充足的证据来破案。 简单的举几个应用场景…

php怎么获取用户所在地址,php获取客户端ip及获取ip所在地址

// 获取ipfunction ip(){if (isset($_SERVER["HTTP_X_FORWARDED_FOR"]))$ip $_SERVER["HTTP_X_FORWARDED_FOR"];else if (isset($_SERVER["HTTP_CLIENT_IP"]))$ip $_SERVER["HTTP_CLIENT_IP"];else$ip $_SERVER["REMOTE_ADDR&…

linux中的rm 删除命令

1.rm 不仅可以删除目录还可以删除文件-f, --force 强制删除。忽略不存在的文件,不提示确认-i 在删除前需要确认-I 在删除超过三个文件或者递归删除前要求确认。此选项比-i 提 示内容更少&a…

在Windows上面安装多个Memcached

在Windows上面安装多个Memcached sc create "memcached Server3" start auto binPath "D:\memcached-1.4.4\memcached.exe -d runservice -m 32 -p 22122" DisplayName "memcached Server3" 转载于:https://www.cnblogs.com/stono/p/8092765.ht…

前端面试

1、如何理解js的闭包 2、js的事件冒泡 3、jquery的跨域请求 4、margin和padding的区别 5,、用过哪些前端框架转载于:https://www.cnblogs.com/iwenwen/p/3959677.html

PHP实现可示化代码

PHP是一种服务器端脚本语言,它主要用于开发Web应用程序。虽然PHP本身不提供可视化代码的功能,但你可以使用一些第三方库和工具来实现可视化代码。 以下是一些常用的PHP可视化代码的工具和库: 1. Graphviz:Graphviz是一个开源的可…

php若$a没定义默认是,PHP之错误处理详解

PHP之错误处理详解错误报告PHP程序的错误发生一般归属于下列三个领域:1、语法错误语法错误最常见,并且也容易修复。如:代码中遗漏一个分号。这类错误会阻止脚本的执行2、运行时错误这种错误一般不会阻止PHP脚本的执行,但会阻止当前…

热血沙城-3.2移植-古月-cocos2dx源码

最近发现我去年学习2dx的时候移植过的一个游戏现在被放在网上出售 真是有点想笑 本人比较喜欢武侠风格的游戏,当时9秒开源了热血沙城 本着学习的态度 从2.1.2移植到3.2 用了一周的时间 中间各种报错 大概修改了1000多处错误 同时增加了支持摇杆 后来放到9秒上开源&…

【openjudge 1.11 07】和为给定数

我看到这个的第一反应就是爆搜&#xff0c;然后写了一个没加$No$的4分程序 #include <bits/stdc.h> #include <algorithm> #define it int #define fr for #define il inline using namespace std; it book[100020],t[100020]; it spe[50010]; it n,m,bz0; it main…

tcp http socket

1、TCP连接 手机能够使用联网功能是因为手机底层实现了TCP/IP协议&#xff0c;可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口&#xff0c;使上层网络数据的传输建立在“无差别”的网络之上。 建立起一个TCP连接需要经过“三次握手”&#xff1a; 第一…

php文件多上传文件,php文件上传(多文件上传)

http://www.cnblogs.com/itcx/p/4209034.htmlupload.phpclass File_upload{public $upload_path./upload/;//上传文件的路径public $allow_typearray();//允许上传的文件类型public $max_size20480;//允许的最大文件大小public $overwritefalse;//是否设置成覆盖模式public $re…

MyBatis的初始化方式

1. 加载配置文件 public static void main(String[] args) throws IOException {//mybatis的配置文件String resource "conf.xml";//使用类加载器加载mybatis的配置文件&#xff08;它也加载关联的映射文件&#xff09;InputStream is Test1.class.getClassLoader(…

iOS 应用内跳转到appstore里下载

SKStoreProductViewController类是UIViewController的子类, 如果你对view controller比较熟悉的话&#xff0c;那SKStoreProductViewController使用起来也非常简单了。当你希望向用户展示App Store中产品时&#xff0c;你需要&#xff1a; 1.实例化一个SKStoreProductViewContr…

MySQL查询本周、上周、本月、上个月份数据的sql代码

http://www.jb51.net/article/32277.htm MySQL查询的方式非常多&#xff0c;以下为您介绍的MySQL查询实现的是查询本周、上周、本月、上个月份的数据&#xff0c;假设您对MySQL查询方面感兴趣的话&#xff0c;最好还是一看查询当前这周的数据SELECT name,submittime FROM enter…