博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
回话处理程序(17)
阅读量:5175 次
发布时间:2019-06-13

本文共 3492 字,大约阅读时间需要 11 分钟。

配置指令

  • 管理会话存储介质

确定如何存储会话信息

 session. save_handler = files(平面文件)mm(共享内存)sqlite(SQLite数据库)user(自定义)

  • 设置会话文件路径

 如果session.save_handler = files,则session.save_path必须指向存储目录

  • 自动启用会话

 session.auto_start = 1 开启自动启动会话

  • 设置会话名称

 session.name = string 设置会话名字

  • 选择cookie或URL重写

 session.use_cookies = 0 将使用URL重写

 如果session.use_cookie被禁用,用户唯一的SID必须要附在URL后面,需要手动添加

  • 自动URL重写

session.use_trans_sid = 1 自动将用户SID变量附加到每个URL后面

  • 设置会话cookie的生存期

 session.cookie_lifetime = 0 确定会话cookie的有效期默认为永久(0秒)

  • 设置会话cookie的有效URL路径

 session.cookie_path = string 确定cookie在那个路径中是有效的

  • 设置会话cookie的有效域

session.cookie_damain = string 确定cookie在那个域有效

若忽略对此指令设置,则cookie的域被设为生成他的服务器主机名

session.cookie_damian = www.xiukang.com

如果网址子域中使用会话,比如:abc.xiukang.com、sear.xiukang.com、red.xiukang.com

session.cookie_damian = .xiukang.com

  • 使用referer来验证会话

如果使用URL重写来传播会话ID,就可以通过复制和散播URL来查看某个会话内容

session.referer_check = string 指令来减少这种可能性,它可以指定一个用于验证每位用户的字串,如果没有此字串,SID将失效

  • 为启用会话的页面设置缓存方向

(。。。)

处理会话

  • 开始会话

 session_start()函数

HTTP会忘记用户过去或将来的环境,所以需要session_start()函数每次请求显示的启动或恢复会话

函数session_start()创建新会话(未找到SID)或继续当前对话(存在SID),这取决于是否拥有SID

只需如下调用该函数

session_start();

 

  • 销毁会话

 session_unset()函数清楚存储在当前会话中的所有会话变量,但不会从存储机制中完全删除对话

session_destroy()函数可以从存储机制中完全删除对话,使当前会话失效

如果不想在会话结束后使用cookie,需要将php.ini文件中session.cookie_lifetime设置为0(默认)

  • 设置和获取会话ID

 虽然PHP可以自动创建和传播SID,但有时希望手动设置和获取这个ID,函数session_id()可以完成这个任务

函数session_id()可以设置和获得SID,如果没有参数则获取当前SID,如果有参数,该参数就是SID

session_start();//创建一个新的会话echo session_id();//输出SID:gc9lu35rda4ttse59lc07mgbup

 

  • 创建和删除会话变量

 会话变量用来管理用户一起从一个页面到下一个页面的数据

就像对待其他变量一样设置和删除会话变量,不过需要在$_SESSION超级全局上下文中引用这些变量

session_start();//创建会话$_SESSION["username"] = "user";echo $_SESSION["username"];

 

可以使用unset()函数删除变量

session_start();//创建会话$_SESSION["username"] = "user";echo $_SESSION["username"];unset($_SESSION["username"]);//unset()函数删除变量

 

  • 编码和解码会话数据

 PHP会自动处理会话的编码和解码

编码会话数据(手动)

session_encode()

//创建新会话session_start();//设置一下会话变量$_SESSION["name"] = "xiu";$_SESSION["age"] = "25";//编码所有会话数据为一个字符串并返回结果$sessionVar= session_encode();echo $sessionVar;//返回:name|s:3:"xiu";age|s:2:"25";

 

解码会话数据(手动)

session_decode()

session_start();//创建新会话$_SESSION["name"] = "xiu";//设置一下会话变量$_SESSION["age"] = "25";$sessionVar = session_encode();//编码所有会话数据为一个字符串并返回结果session_decode($sessionVar);//解码当前编码的会话echo $_SESSION["name"];//xiuecho $_SESSION["age"];//25

 

 

实际的会话处理实例

  • 以返回用户身份自动登陆

 MySQL表

create table users (    id integer not null auto_increment,    first_name varchar(255) not null,    user_name varchar(255) not null,    primary key(id))

 

HTML表单

username:

password:

 

PHP管理自动登陆代码

 

session_start();if(!isset($_SESSION["username"])){
//判断之前是否发起会话 if(isset($_POST["username"])){
//判断之前是否登陆过 $mysqli = new mysqli("localhost","root","123","test");//链接数据库 $stmt = $mysqli -> prepare("select first_name from users where user_name = ? and password = ? ");//创建查询语句 $stmt -> bind_param("ss",$_POST["username"],$_POST["password"]);//绑定参数 $stmt -> execute();//执行语句 $stmt -> store_result();// if($stmt -> num_rows == 1){
//数据库响应1条数据 $stmt -> bind_result($firstsname);// $stmt -> fetch();// $_SESSION["first_name"] = $firstsname;//绑定结果参数 echo $_SESSION["first_name"];// }else { require_once("index.html");// echo "密码错误";// } }else { require_once("index.html");// }}else { echo "登陆成功";//}

 

  • 生成最近浏览文档的索引

 

创建定制会话处理程序

  • 将定制会话函数假如到PHP逻辑

 

  • 使用基于MySQL的定制会话处理程序

 

转载于:https://www.cnblogs.com/xiukang/p/8569929.html

你可能感兴趣的文章
CentOS 6.0 图形(图解)安装教程
查看>>
寻路算法——总结
查看>>
Find Minimum in Rotated Sorted Array II
查看>>
Linux系统编程(11)——进程间通信之有名管道
查看>>
分区 Service Bus 队列和主题
查看>>
HDU 5649 DZY Loves Sorting(二分答案+线段树/线段树合并+线段树分割)
查看>>
[转]蚁群算法、遗传算法、模拟退火算法
查看>>
JSON.parse()和JSON.stringify()
查看>>
[LeetCode] Group Anagrams
查看>>
Character Encoding Issues for tomcat
查看>>
Python的历史及介绍
查看>>
【BZOJ1093】【ZJOI2007】最大半联通子图 [DP][Tarjan]
查看>>
正式版
查看>>
占地导航 培训总结(团队发展,直面市场)
查看>>
python读取csv文件的某一列或某几列
查看>>
tomcat发布webapp目录中没有JSP文件
查看>>
洛谷 P3307: bzoj 3202: [SDOI2013] 项链
查看>>
MyBatis学习总结(五)——实现关联表查询(转载)
查看>>
九款Web服务器性能压力测试工具
查看>>
Python创建容器和集合之源码分析
查看>>