‘壹’ 涓轰粈涔堣剧疆php镄剆ession
涓銆佷粙缁
PHP涓璼ession榛樿よ繃链熸椂闂存槸1440S锛岃秴杩囱繖涓镞堕棿娌℃湁椤甸溃鍒锋柊鎴栬呯敤鎴峰叧闂浜嗘祻瑙埚櫒锛宻ession灏变细澶辨晥銆
浜屻佽剧疆
session鏂囦欢瀛桦偍鍦ㄦ湇锷″櫒绔锛岄氲繃淇濆瓨鍦ㄧ敤鎴风镄凷essionId涓庢湇锷″櫒杩涜屼氦浜掞纴session镄勯厤缃鏂囦欢鏄痯hp.ini锛岀浉鍏冲弬鏁板备笅锛
1.session.use_cookies = 1锛岄粯璁1锛屼唬琛⊿essionId阃氲繃cookie𨱒ヤ紶阃掞纴钖﹀垯浼氱敤Query_String
2.session.name = PHPSESSID锛岄粯璁PHPSESSID锛屼唬琛⊿essionID鍌ㄥ瓨镄勫彉閲忓悕绉帮纴鍙鑳芥槸Cookie锛屼篃鍙鑳芥槸Query_String𨱒ヤ紶阃
3.session.cookie_lifetime = 604800锛屾槸SessionID鍦ㄥ㈡埛绔疌ookie鍌ㄥ瓨镄勬椂闂达纴榛樿ゆ槸0锛屼唬琛ㄦ祻瑙埚櫒涓鍏抽棴SessionID绔嫔嵆澶辨晥锛岃繖閲屾垜璁剧疆浜7澶
4.session.gc_maxlifetime = 604800锛岄粯璁ゆ槸1440锛屼唬琛╯ession鍦ㄦ湇锷″櫒绔淇濈暀镄勬椂闂达纴瓒呰繃杩欎釜镞堕棿灏变细澶辨晥銆傝繖閲屾垜璁剧疆浜7澶╋纴涓庡㈡埛绔镄刢ookie链夋晥镞堕棿涓镊
涓夈佸叾浠栨儏鍐
涓鑸𨱍呭喌涓嬫妸杩椤洓涓鍊艰剧疆濂戒箣钖庡氨鍙浠ユ洿鏀箂ession镄勬湁鏁堟湡浜嗭纴浣嗘槸褰揿氢釜绔欑偣镄剆ession鏂囦欢閮戒缭瀛桦湪鍏鐢ㄤ复镞惰矾寰勬椂锛岀敱浜巅hp镄凣C锛圙arbage Collector锛夋満鍒讹纴镆愪釜绔欑偣钖锷ㄥ瀮鍦惧洖鏀舵満鍒讹纴閮戒细鎶婂叕鐢ㄤ复镞舵枃浠剁洰褰曚笅镄勬枃浠跺叏閮ㄦ竻闄わ纴杩椤氨浼氩艰嚧session澶辨晥锛岃В鍐虫柟娉曞氨鏄镟存敼php.ini閲宻ession鏂囦欢镄勪缭瀛樿矾寰勶细
session.save_path=钬树綘镄勮矾寰勨欙绂
‘贰’ php session是怎样生成的
session是在服务器端保持用户会话数据的一种方法,对应的cookie是在客户端保持用户数据。HTTP协议是一种无状态协议,服务器响应完之后就失去了与浏览器的联系,最早,Netscape将cookie引入浏览器,使得数据可以客户端跨页面交换,那么服务器是如何记住众多用户的会话数据呢?
首先要将客户端和服务器端建立一一联系,每个客户端都得有一个唯一标识,这样服务器才能识别出来。建议唯一标识的方法有两种:cookie或者通过GET方式指定。默认配置的PHP使用session的时会建立一个名叫”PHPSESSID”的cookie(可以通过php.ini修改session.name值指定),如果客户端禁用cookie,你也可以指定通过GET方式把session id传到服务器(修改php.ini中session.use_trans_sid等参数)。
我们查看服务器端session.save_path目录会发现很多类似sess_vv9lpgf0nmkurgvkba1vbvj915这样的文件,这个其实就是session id “vv9lpgf0nmkurgvkba1vbvj915″对应的数据。真相就在这里,客户端将session id传递到服务器,服务器根据session id找到对应的文件,读取的时候对文件内容进行反序列化就得到session的值,保存的时候先序列化再写入。
事实就是这样,所以如果服务器不支持session或者你想自定义session,完全可以DIY,通过PHP的uniqid生成永不重复的session id,然后找个地方存储session的内容即可,你也可以学flickr把session存储在MySQL数据库中。
‘叁’ php中如何使用SESSION
1、在php中使用session,首先要启动session会话,启动session会话要使用php内置函数session_start(),如图所示。
‘肆’ php在开启session_start()后刷新页面_COOKIE[PHPSESSID]的值会变化,不是有唯一的值吗
在PHP中,开启session_start后,$_COOKIE[PHPSESSID]的值在正常情况下不会每次刷新页面都变化,它应该是唯一的,并且在会话期间保持不变。以下是对这一点的详细解释:
唯一性:
不变性:
会话失效:
异常情况:
综上所述,正常情况下,在PHP中开启session_start后,$_COOKIE[PHPSESSID]的值应该是唯一的,并且在会话期间保持不变。如果出现异常情况,需要检查PHP的配置和代码以找出原因。