本文总结了PHP会话的操作技巧。分享给大家参考,如下:
会话技术
会议
会话数据存储在服务器端,同时可以区分会话数据。浏览器为每个会话数据建立一个独立的会话数据区(存储当前会话的所有数据),每个会话数据区都有一个唯一的标识符,浏览器端存储这个唯一的标识符供配对使用。作为响应,给予浏览器的会话id值也存储在浏览器的cookie数据区中。
php.ini:
session . auto _ start=0 session _ start();
增加、删除、修改、查询都和普通数组一样使用$_SESSION完成$_SESSION数组的操作,然后就可以完成SESSION数据的操作
会话原则
存储在浏览器端cookie中的会话id是一个普通的cookie变量
每个会话生成一个存储在服务器端的会话数据区
默认文件存储在服务器系统的临时目录中
会话。save _ path='/temp '会话数据属性
有效期:一个会话期
有效路径:全站
有效域:当前域
仅安全连接传输:否
没有
上述会话数据的特征都是由存储在浏览器cookie中的会话id的特征引起的。可以看到,如果需要更改会话数据的属性,就需要更改存储会话ID的cookie变量PHPSESSID的属性:
php.ini中对此属性有一个设置:
仅安全连接传输:
;http://php.net/session.cookie-secure;会话。cookie_secure=生命周期:
;cookie的生存期(以秒为单位),如果为0,则为浏览器重新启动前的生存期。http://php.net/session.cookie-lifetimesession.cookie_lifetime=0有效路径:
;cookie有效的路径。http://php.net/session.cookie-pathsession.cookie_path=/有效字段:
;cookie对其有效的域。http://php.net/session.cookie-domainsession.cookie_domain:
;是否在cookie中添加httpOnly标志,这使得浏览器脚本语言(如JavaScript)无法访问该标志。http://php.net/session.cookie-httponlysession.cookie_httponly=如果需要修改默认属性,可以使用以下方法:
1.修改php.ini配置文件;
2.脚本中,ini_set(key,val)用于修改设置配置,仅在设置后的脚本周期内有效,应在session_start()之前设置;
3.使用特定功能:
//session_set_cookie_params(有效期、有效路径、有效域、是否只安全传输连接、是否为HTTPOnly);session_set_cookie_paramas(60,'/',' me.com ',true,true);session _ start();会话语法问题
会话数据可以是任何类型,因为会话数据区中的数据是在序列化后存储的。
$_SESSION['']的下标只能是字符串
在session_start()之前,输出不应存在
会话数据区
在脚本周期之外,当前会话的会话数据被持久存储
在脚本周期中,使用$_SESSION来管理会话数据
会话破坏
//删除当前会话对应的会话数据区,关闭会话机制(周期结束后不能持久)。session _ destroy();//$_SESSION仍然存在以清空会话数据
$ _ SESSION=array();删除当前相关会话的所有数据:
session _ destroy();unset($ _ SESSION);setcookie(' PHPSESID ','',time()-1);//PHPSESSID称为session.name可以通过php.ini//the当前值配置,可以通过session_name()获取;会话的名称(用作cookie名称)。http://php.net/session.namesession.name=phpsessid覆盖会话存储机制(内存中/内存外)
目的:
管理大量会话数据和与web服务器集群共享会话数据非常方便
实施:
定义用户定义的相关存储处理功能,并将其设置为会话机制所需的存储功能(告诉会话机制,并使用我们的功能来完成存储处理)
会话机制:
会话集存储处理程序();总共需要六个存储处理功能
开始、结束、读取、写入、删除、垃圾收集
在session_start()之前使用
?PHP//会话开始执行时最早执行的一个存储相关方法,用于初始化存储操作的相关资源函数ses _ beg(){//echo ' begin/br ';$link=mysql_connect('127.0.0.1 ',' root ',' root ');MySQL _ query(' set name utf8 ');MySQL _ select _ db(' session _ override ');}//在会议机制关闭时执行的方法,最后一个执行的存储相关操作,用于收尾函数ses _ end(){ echo ' end/br ';返回真;}//不需要负责反序列化操作,在读取之后脚本自动执行函数ses _ read($ ses _ id){//echo ' read/br ';$sql='从会话中选择会话内容,其中session _ id=' $ ses _ id $ RES=MySQL _ query($ SQL);if($ row=MySQL _ fetch _ assoc($ RES)){ return $ row[' session _ content '];} else { return}}//不需要序列化操作,在写入之前脚本会自动执行函数ses_write($ses_id,$ ses _ con){//echo ' write/br ';//echo $ses_id,$ ses _ con$sql='替换为会话值($ses_id ',' $ses_con ',UNIX _ timestamp())';echo $sql ./br ';返回MySQL _ query($ SQL);}//当调用会话_销毁()时执行函数ses _ del($ ses _ id){//echo ' del/br ';$sql='从会话中删除,其中会话id=' $ ses _ id返回MySQL _ query($ SQL);}//会话。GC _最大寿命=1440//在开启会议机制的过程中,有概率地执行垃圾回收机制//会话。GC _ probability=1//会话。GC _ divider=1000//@ param会话。GC _最大寿命//返回booleanforceses _ GC($最大生存期){//echo ' GC/br ';ini _ set('会话。GC _ divider ',2);$sql='从会话覆盖中删除,其中last_timeunix_timestamp()-' .$ maxlifetime返回MySQL _ query($ SQL);}//FilePhp内置的会议存储处理器//重写会议机制,应该改为用户用户自定义ini_set('session.save_handler ',' user ');//配置存储机制要在开始之前,要保证会议不自动开启//session.auto_start=0/.HTA塞斯PHP _ flag会话。auto _ start 0 session _ set _ save _ handler(' ses _ beg ',' ses_end ',' ses_read ',' ses_write ',' ses_del ',' ses _ GC ');session _ start();$ _ SESSION[' id ']=' test ';session _ destroy();会议与甜饼干
联系
都是会话技术的实现会议基于甜饼干
差异
餐桌饼干会话会话数据存储位置浏览器端服务器端安全性低高数据传输量大小支持会话数据量有限制4K 20个无大小限制支持数据类型字符串所有会话数据持久化
浏览器端会话编号
会话集参数(3600)服务器端会议数据区
ini _ set('会话。GC _最大生存期',' 3600')cookie禁用
常规情况下嘿,饼干禁用,会话不能使用
技术上可以通过得到或者邮政方式向服务器携带会话编号
//是否仅仅使用甜饼干携带session-idi _ set(' session。使用_ only _ cookies ',' 0 ');//是否自动采用其它方式自动传会话id,不安全ini_set('session.use_trans_sid ',' 1 ');更多关于服务器端编程语言(专业超文本预处理器的缩写)相关内容感兴趣的读者可查看本站专题: 《PHP中cookie用法总结》 、 《PHP数组(Array)操作技巧大全》 、 《PHP基本语法入门教程》 、 《PHP运算与运算符用法总结》 、 《php面向对象程序设计入门教程》 、 《PHP网络编程技巧总结》 、 《php字符串(string)用法总结》 、 《php+mysql数据库操作入门教程》 及《php常见数据库操作技巧汇总》
希望本文所述对大家服务器端编程语言(专业超文本预处理器的缩写)程序设计有所帮助。