宝哥软件园

php会话应用的详细介绍

编辑:宝哥软件园 来源:互联网 时间:2021-09-05

php会话的高级应用

会话在网络技术中非常重要。因为网页是无状态连接程序,不可能知道用户的浏览状态。使用session,您可以记录用户的相关信息,当用户再次像这样向web服务器提交需求时,可以确认这些信息。

比如用户在浏览电商网站时,如果没有会话,用户每次浏览都需要输入账号密码。

1.会话临时文件

在服务器中,如果用户的所有会话都保存在临时目录中,服务器的安全性和效率将会降低。打开服务器存储的站点可能非常慢。

使用PHP函数Session_save_path()存储会话临时文件,可以缓解临时文件存储带来的服务器效率降低、网站打开缓慢的问题。

示例代码如下:

?php$path='。/tmp/';//设置会话存储session_save_path的路径($ path);session _ start();$ _ SESSION[' userName ']=true;注意

Session_save_path()必须在session_start()之前执行。

2.会话缓存

会话缓存将网页内容临时存储在IE客户端的临时INternet Files文件夹中,可以设置缓存时间。

会话缓存使用session_cache_limiter()函数,其语法如下:

string session _ cache _ limiter([string cache _ limiter]);参数cache_limiter是公共的或私有的。同事会话不在服务器端,而是在客户端。不显示在服务器中。

函数session_cache_expire()用于设置缓存时间。语法如下:

int session _ cache _ expire([int new _ cahche _ expire]);参数new_cahche_expire是会话缓存的时间数,以分钟为单位。

注意:

这两个会话函数必须在session_start()函数之前执行

会话缓存页面的示例代码如下:

?PHP session _ cache _ limiter(' private ');$ cache _ limit=session _ cache _ limiter();//打开客户端缓存回应“缓存限制为:“”。$cache_limit。 n ';session _ cache _ expire(30);$ cache _ expire=session _ cache _ expire();//设置客户端缓存时间回应“客户端缓存时间为”。$cache_expire。分钟 n ';session _ start();运行结果如下:

这里写图片描述

3.会话数据库存储

php中的会话数据库存储主要是通过session_set_save_handler()函数实现的。具体语法如下:boolsession _ set _ save _ handler(字符串打开、字符串关闭、字符串读取、字符串写入、字符串销毁、字符串GC);

这里写图片描述

以下六个参数(函数)分别分组。学习面向对象编程后,大家会有更清晰的认识。

(1)用以下代码封装session_open()函数:

function _ session _ open($ save _ path,$ session _ name){ global $ handle;$ handle=MySQL _ connect(' localhost ',' root ',' root ')或die('数据库连接失败!');MySQL _ select _ db ('db _ database11 ',$ handle)或die('数据库不存在');返回(真);}(2)用以下代码封装session_close()函数:

function _ session _ close(){ global $ handle;MySQL _ close($ handle);返回(真);}(3)封装Session_read()函数,在函数中设置当前时间的UNIX时间戳,根据$key搜索会话名片和内容。代码如下:

function _ session _ read($ key){ gol bal $ handle;//全局变量$handle连接到数据库$ time=time();//设置当前时间$ SQL='从TB _ session中选择session _ data,其中session _ key=' $ key '和session _ time ' $ time$result=mysql_query($ssql,$ handle);$ row=MySQL _ fetch _ array($ result);if($ row){ return($ row[' session _ data ']);} else { return(false);}}(4)打包Session_write()函数,该函数设置Session的过期时间,并查找Session的名称和内容。如果查询结果为空。页面中会话根据session_id、session_name的过期时间插入数据库。如果查询结果不为空,则根据$key修改数据库中存储的Session信息。代码如下:

function _session_write($key,$ data){ global $ handle;$ time=60 * 60 $ passage _ time=time()$ time;//得到一种多用户的计算机操作系统时间戳$sql='从tb_session中选择会话数据,其中session_key='$key '和session _ time $ passage _ time ';$result=mysql_query($sql,$ handle);if(MySQL _ num _ rows($ result)=0){//没有结果$ sql='插入到tb _ session中值(' $key ',' $data ',$ deliver _ time ');$result=mysql_query($sql,$ handle);} else { $ SQL=' update TB _ session set session _ key=' $ key ',session_data='$data ',session _ time=$ lapse _ time,其中session _ key=' $ key$result=mysql_query($sql,$ handle);} return($ result);}(5) 封装session_destroy(),根据$key删除数据库中的塞辛。代码如下:

function _ session _ destroy(){ global $ handle;$sql='从tb_session中删除,其中session _ key=' $ key $ result=MySQL _ query($ SQL,$ handle);}(6)封装session_gc(),根据会议的失效时间删除过期的会话,示例代码如下:

func tin _ session _ GC($ expire _ time){ global $ handle;$sql='从tb_session中删除,其中session _ expire _ time $ expire _ time ';$result=mysql_query($sql,$ handle);return($ result);}具体的代码运行就不做了,等到学完面向对象的编程的时候给大家演示下哦。

更多资讯
游戏推荐
更多+