千家信息网

PHP中session会话操作技巧有哪些

发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,这篇文章主要介绍PHP中session会话操作技巧有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体如下:会话技术session将会话数据存储与服务器端,同时使会话数据可
千家信息网最后更新 2024年11月26日PHP中session会话操作技巧有哪些

这篇文章主要介绍PHP中session会话操作技巧有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

具体如下:

会话技术

session

将会话数据存储与服务器端,同时使会话数据可以区分浏览器
为每个会话数据建立独立的会话数据区(来存储当前会话的全部数据),每个会话数据区存在唯一的标志,同时浏览器端存储该唯一标识配对使用。
响应时给浏览器的session-id值也存储于浏览器端的cookie数据区。

php.ini:

session.auto_start = 0

session_start();

增删改查都是使用$_SESSION完成
跟操作普通数组一样操作$_SESSION数组,就可以完成对session数据的操作

session原理

存储于浏览器端cookie中的session-id,就是一个普通的cookie变量

每个会话生成存储于服务器端的session数据区

默认的以文件的形式存储于服务器系统临时目录下

session.save_path = '/temp'

session数据属性

有效期:一个会话周期

有效路径:整站

有效域:当前域

是否仅安全连接传输:否

是否HTTPOnly:否

以上session数据的特征,都是由浏览器cookie中存储的session-id的特征所导致的。可见如果需要改变session数据的属性,则需更改存储session-id的cookie变量PHPSESSID的属性:

php.ini 存在该属性的设置:

仅安全连接传输:

; http://php.net/session.cookie-secure;session.cookie_secure =

生命周期:

; Lifetime in seconds of cookie or, if 0, until browser is restarted.; http://php.net/session.cookie-lifetimesession.cookie_lifetime = 0

有效路径:

; The path for which the cookie is valid.; http://php.net/session.cookie-pathsession.cookie_path = /

有效域:

; The domain for which the cookie is valid.; http://php.net/session.cookie-domainsession.cookie_domain =

HTTPOnly:

; Whether or not to add the httpOnly flag to the cookie, which makes it inaccessible to browser scripting languages such as 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数据可以是任意的类型,因为session数据区的数据就是序列化后存储的。

$_SESSION['']的下标只能是字符串

session_start()前不应存在输出

session数据区

在脚本周期外,持久存储当前会话session数据

在脚本周期内,使用$_SESSION管理session数据

session 销毁

//删除当前会话对应的session数据区并关闭session机制(周期结束后无法持久化)session_destroy();//$_SESSION还是存在的

清空session数据

$_SESSION = array();

当前相关session的全部数据删除:

session_destroy();unset($_SESSION);setcookie('PHPSESSID',"",time()-1);//PHPSESSID称之为session.name 可通过php.ini配置//可通过session_name()获取当前值; Name of the session (used as cookie name).; http://php.net/session.namesession.name = PHPSESSID

重写session存储机制(入库、入内存)

目的:

便于管理大量session数据
便于web服务器集群共享session数据

实现:

定义自定义的相关的存储处理函数
将其设置为session机制需要的存储函数(告知session机制,使用我们的函数完成存储处理)

session机制:

session_set_save_handler();

共需六个存储处理函数

begin、end、read、write、del、gc(垃圾回收)

需要在session_start()前使用

'; $link = mysql_connect('127.0.0.1','root','root'); mysql_query('set names utf8'); mysql_select_db('session_override');}//在session机制关闭时执行的方法,最后一个执行的存储相关操作,用于收尾function ses_end(){ echo 'end
'; return true;}//不需要负责反序列化操作,在读取之后脚本自动执行function ses_read($ses_id){// echo 'read
'; $sql = "select session_content from session where session_id = '$ses_id'"; $res = mysql_query($sql); if($row = mysql_fetch_assoc($res)){ return $row['session_content']; }else{ return ''; }}//不需要序列化操作,在写入之前脚本会自动执行function ses_write($ses_id,$ses_con){// echo 'write
';// echo $ses_id,$ses_con; $sql = "replace into session values( '$ses_id' , '$ses_con',unix_timestamp() )"; echo $sql.'
'; return mysql_query($sql);}//当调用session_destroy()时执行function ses_del($ses_id){// echo 'del
'; $sql = "delete from session where session_id = '$ses_id'"; return mysql_query($sql);}//session.gc_maxlifetime = 1440//在开启session机制的过程中,有概率地执行垃圾回收机制//session.gc_probability = 1//session.gc_divisor = 1000//@param session.gc_maxlifetime//return booleanfunction ses_gc($maxlifetime){// echo 'gc
'; ini_set('session.gc_divisor',2); $sql = 'delete from session_override where last_time

session 与 cookie

联系

都是会话技术的实现
session基于cookie

差异

Tablescookiesession
会话数据存储位置浏览器端服务器端
安全性
数据传输量
支持会话数据量有限制 4K 20个无大小限制
支持数据类型字符串ALL

session数据持久化

浏览器端 session-id

session_set_params(3600)

服务器端 session数据区

ini_set('session.gc_maxlifetime','3600')

cookie禁用

常规情况下,cookie禁用,session不能使用

技术上可以通过get或者post方式向服务器携带session-id

//是否仅仅使用cookie携带session-idini_set('session.use_only_cookies','0');//是否自动采用其它方式自动传session-id,不安全ini_set('session.use_trans_sid','1');

以上是"PHP中session会话操作技巧有哪些"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

数据 存储 机制 有效 浏览器 浏览 服务器 服务 周期 安全 函数 属性 脚本 传输 处理 配置 序列 技术 方法 路径 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 关于数据库开发平台的描述 数据库查询最贵的三本图书信息 计算机网络技术考什么专业课 阿里巴巴服务器在贵州吗 怎么连接我的世界电脑版服务器 数据库共享用户名 丽水网络安全准入控制系统推荐 数据库表导出为二进制文件 打ctf网络安全大赛有何意义 温州网络技术有限公司招聘 服务器访问不了3306端口 常用英文检索数据库 中国知网数据库可以检索到 和平精英无法连接到服务器请检查 美国网络安全市场容量 手机清理数据库哪个好 数据库 索引类型 服务器温度报警 电脑服务器的红灯闪老响咋回事 凶暴兽栏 数据库 网络安全相关工作规程 服务器管理器中角色怎么打开 学校网络安全保证书 如何避免校园网服务器记录 温州网络技术有限公司招聘 美国是全球网络安全信任危机的始作俑者 组态王软件开发狗和加密狗 c 芒果数据库 网络安全大赛风云人物 网络安全员的考核制度
0