php重写session机制-编程小技巧

php重写session机制-编程小技巧

ID:30790538

大小:60.00 KB

页数:6页

时间:2019-01-03

php重写session机制-编程小技巧_第1页
php重写session机制-编程小技巧_第2页
php重写session机制-编程小技巧_第3页
php重写session机制-编程小技巧_第4页
php重写session机制-编程小技巧_第5页
资源描述:

《php重写session机制-编程小技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、PHP重写session机制众所周知,session在web应用屮占有举足轻重的地位。而且,在很多情况下我们需要改变session的存储位置。当然/,改变session存储的位置可以在php.ini文件中直接修改。但是,这需要我们对服务器有足够的权限。可是事实却是在很多时候我们并没有权限去操作php.ini文件的权限。这时需要我们通过PIIP提供的scssion_sct_savc_handlcr()函数来重写sessiono针对这一情况,PHP5>5.4和php7支持SessionHandlerlnterface接口。SessionHandlerlnterfa

2、ce{/*方法*/abstractpublicboolclose(void)abstractpublicbooldestroy(string$session_id)abstractpublicboolgc(intSmaxlifetime)abstractpublicboolopen(string$save_path,string$name)abstractpublicstringread(string$session_id)abstractpublicboolwrite(string$session_id,string$session_data)我们需要做的就

3、是实现这个接口中的所冇的方法。然后通过session_set_save_handler()函数來使方法牛效。注:本文中的例子是将session存到redis中。对于PHP如何操redis,大家可以参考《PHP操作Redis的两种方式》。下面我们來分别介绍这些函数的实现方法。open函数abstractpublicboolSessionHandlerlnterface::open(string$save_path,string$name){}璽新初始化现冇的session,抑或是创建一个session。该函数在session_start()函数执彳亍的时候被调用

4、。$save_path这个参数对应的就是php.ini屮的session.save_path选项。这个选项设置的值就是$savc_path的值。默认情况下,php.ini中session.savc_path这个选项是被注释的,所以$savc_path的值为空。举个例子:session.save_path设置为/tmp,则$save_path的值为/tmp。Sname这个参数对应的就是php.ini屮的session.name选项。默认悄况卜session.name设置为PHPSESSIDo所以说$name参数值为PHPSESS1D。我在实现这个函数的时候没有做

5、其他的处理(因为我想将session存到redis屮),只是连接了redis数据库。publicfunctionopen($save_path,$name){/**首先连接服务器*/$this->parseConnect();returntrue;}close函数abstractpublicboolSessionHandlerlnterface::close(){}关闭为前的sessiono该函数在为关闭session的时候被白动触发,或者在程序屮调丿IJsessionwritc_close()函数是触发close。函数。在实现该函数时没有做什么特殊的处理pu

6、blicfunctionclose(){returntrue;read函数abstractpublicboolSessionHandlerlnterface::read($session_id){)读取session数据。当调用session_start()函数的时候会触发read()函数。当然该前数的触发是在openZ后的。$session_id该参数就是对应的由客户端传过来的sessionldo所有的操作都需要根据这个sessionld来进行。publicfunctionread($session_id){/**根据sessionld构造键名*/$key=

7、$this->prefix/:'.$session〃读取当前scssionid下的data数据$res=$this->handle->hGet($key,'data');〃读取完成以后更新时间,说明已经操作过session$this->handle->hSet($key/last_time',time());return$rcs;}write函数abstractpublicboolSessionHandlerlnterface::write(Ssession_id,$session_data){}该函数是将session的数据写到相应的位置左。当操作$_SES

8、SION来序列化数据的时候该函数被触发

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。