--------------------------------------------------------------------------------------------------------- 一. PHP的session原理: 1.开启session_start(),服务器端产生session文件,将相关信息存储到这个文件中,文件以"sess_"为前缀,连接session_i
---------------------------------------------------------------------------------------------------------
一. PHP的session原理:
1.开启session_start(),服务器端产生session文件,将相关信息存储到这个文件中,文件以"sess_"为前缀,连接session_id()值来命名(内容是由特定算法生成的用户的明文信息,大型项目则须进行加密处理),同时将sessionid保留到客户端浏览器的cookie中。
2.第二次开启session_start(),浏览器判断cookie中是否有sessionid,如果有,不再创建文件,而是直接使用这个sessionid访问服务器,通过sessionid找对应的session文件,读取session中内容存储到$_SESSION数组中。
破浪分红权返利系统是在破浪直销系统的基础上独立自主开发的一套稳定完善的购物商场网站管理系统,系统基于PHP+MYSQL开发,集购物商城、积分商城、商家联盟、会员营销机制等一体,模板与程序分离,集成网上支付,嵌入型短信应用API集成,使用简单、功能强大,多种返现模式可自由选择,为广大创业者者提供一个快速、高效、稳定、安全的电子商务系统。系统集O2O\C2C\B2C\B2B2C以及直销、分红、代理、分
0
立即学习“PHP免费学习笔记(深入)”;
注意:session_start()前不能有任何输出,此函数向客户端发一个session_id保存在cookie中。
立即学习“PHP免费学习笔记(深入)”;
二. PHP机制使用session:
1.开启session
session_start();
2.存取session
$_SESSION['uname'] = 'chenwei';
3.销毁session
unset($_SESSION['uname']); //删除内存中由session数组保存的变量;$_SESSION = array()清楚所有session变量
setCookie(session_name(), '', time()-1, '/'); //删除客户端cookie中的sessionid, session_name()默认是PHPSESSID
session_destory(); //销毁服务器端session文件
立即学习“PHP免费学习笔记(深入)”;
三. PHP的session配置选项
查看session配置的最直接方式就是phpinfo(); 然后根据需要配置/usr/local/php/etc/php.ini文件里的session选项,其实一般默认就可以。
可以考虑更改的配置选项有:
session.cookie_lifetime = 0; //设置cookie保存时间(秒),相当于session的过期时间,0表示直到浏览器重启
session.save_handler = files; //保存和取回数据的方式,默认为文件; 涉及到存储机制,此处不作延伸
当然也可以不修改配置文件,使用系统函数,达到同样的效果:
setCookie(session_name(), session_id(), time()+1440, '/'); //设置cookie有效时间为1440秒(24’),解决关闭浏览器session丢失的现象;session在服务器上存的最长时间为24’,重新连接后才不会过期。(即保持登录功能)
立即学习“PHP免费学习笔记(深入)”;
四. PHP的session自动回收机制(启动概率 = session.gc_probability / session.gc_divisor)
session.gc_probability = 1 //启动几率
session.gc_divisor = 1000 //被除数,因子
session.gc_maxlifetime = 1440 //设置session的最大过期时间,默认1440''
只要客户端存在操作,session过期时间就会保持不减;当超过过期时间未操作,回收机制就会启动,将服务端session删除。
五. 基于URL传递session的id(解决客户端禁用cookie的情况)
1. url传参:
服务端处理:
$sid = !empty($_GET[session_name()]) ? $_GET[session_name()] : '';
session_id($sid); //设置用已有的sid开启会话,在session_start()之前
session_start();
2. 如何自动判断是否开启了cookie,并使用对应的传递方式?(使用系统自带SID常量,自动判断)
$sid = !empty($_GET[session_name()]) ? $_GET[session_name()] : '';
if($sid != ''){
session_id($sid);
}
3. 使URL自动加session的id?
enable_trans_uid配置选项,和运行时选项session.use_trans_sid都被激活时,当客户端禁用cookie时,相对的URL将自动被修改为包含sessionid,如果没有配置或使用Windows服务器,可以使用常量SID。
立即学习“PHP免费学习笔记(深入)”;
Link: http://www.cnblogs.com/farwish/p/3909087.html
@黑眼诗人
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
C++高性能并发应用_C++如何开发性能关键应用
Java AI集成Deep Java Library_Java怎么集成AI模型部署
Golang后端API开发_Golang如何高效开发后端和API
Python异步并发改进_Python异步编程有哪些新改进
C++系统编程内存管理_C++系统编程怎么与Rust竞争内存安全
Java GraalVM原生镜像构建_Java怎么用GraalVM构建高效原生镜像
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API
C++现代C++20/23/26特性_现代C++有哪些新标准特性如modules和coroutines
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号