php session的应用详细介绍

PHP session高级应用

session在web技术中非常重要,由于网页是一种无状态的连接程序,因此无法得知用户的浏览状态。通过session则可以记录用户的有关信息,以供用户再次以此身份对web服务器提交要求时确认。

例如:用户在浏览电子商务网站的时候,如果没有session,那么用户每次浏览就需要输入账户密码。

1,Session 临时文件

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

使用PHP函数session_save_path()函数存储Session临时文件,可以缓解因临时文件的存储导致的服务器效率降低和站点打开缓慢的问题。

示例代码如下:

rush:PHP;">

注意

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

2,Session 缓存

Session 缓存是将网页中的内容临时存储到IE客户端的Temporary INternet Files文件夹,并且可以设置缓存的时间。

Session的缓存使用的是 session_cache_limiter()函数,其语法如下:

rush:PHP;"> string session_cache_limiter([string cache_limiter]);

其中参数cache_limiter 为public 或private 。同事session不是在服务器端,而是在客户端。在服务器中没有显示

缓存时间的设置,使用的是函数 session_cache_expire()语法如下:

rush:PHP;"> int session_cache_expire([int new_cahche_expire]);

参数new_cahche_expire 是session缓存的时间数字,单位分钟。

注意:

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

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

rush:PHP;"> session_cache_limiter("private");
$cache_limit =session_cache_limiter(); //开启客户端缓存
echo "缓存限制为:".$cache_limit."\n";
session_cache_expire(30);
$cache_expire = session_cache_expire(); //设定客户端缓存时间
echo "客户端缓存时间为:".$cache_expire."分钟\n";
session_start();

?>

运行结果如下:

这里写图片描述

3,Session数据库存储

PHP中Session 的数据库存储主要是通过 session_set_save_handler()函数来实现的。 具体语法如下: bool session_set_save_handler(string open,string close,string read,string write,string destroy,string gc);

这里写图片描述

下面分别将这6个参数(函数)分装起来,在学习完面向对象编程后,大家会有一个更加清晰的认识。

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

rush:PHP;"> function _session_open($save_path,$session_name){ global $handle; $handle =MysqL_connect('localhost','root','root')or die('数据库连接失败!'); MysqL_select_db('db_database11',$handle)or die('数据库不存在'); return(true); }

(2)封装session_close()函数代码如下:

rush:PHP;"> function _session_close(){ global $handle; MysqL_close($handle); return(true); }

(3) 封装 session_read()函数,在函数中设定当前时间的UNIX时间戳,根据$key查找Session名片及内容代码如下:

MysqL_query($ssql,$handle); $row =MysqL_fetch_array($result); if($row){ return($row['session_data']); }else{ return(false); } }

(4) 封装session_write()函数函数设定Session的失效时间,查找到Session的名称内容,如果查询结果为空。则将页面中Session根据session_id,session_name,失效时间,插入数据库中。如果查询结果不为空,则根据 $key修改数据库中Session存储信息。代码如下:

MysqL_query($sql,$handle); if(MysqL_num_rows($result)==0){ //没有结果 $sql ="insert into tb_session values('$key','$data',$lapse_time)"; $result =MysqL_query($sql,$handle); }else{ $sql ="update tb_session set session_key='$key',session_data ='$data',session_time =$lapse_time where session_key ='$key'"; $result =MysqL_query($sql,$handle); } return($result); }

(5) 封装session_destroy(),根据$key删除数据库中的Sessin.代码如下:

rush:PHP;"> function _session_destroy(){ global $handle; $sql ="delete from tb_session where session_key ='$key'"; $result =MysqL_query($sql,$handle); }

(6)封装session_gc(),根据Session的失效时间删除过期的Session,示例代码如下:

rush:PHP;"> functin _session_gc($expiry_time){ global $handle; $sql ="delete from tb_session where session_expiry_time<$expiry_time"; $result =MysqL_query($sql,$handle); return($result); }

具体的代码运行就不做了,等到学完面向对象的编程的时候给大家演示下哦。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


服务器优化必备:深入了解PHP8底层开发原理
Golang的网络编程:如何快速构建高性能的网络应用?
Golang和其他编程语言的对比:为什么它的开发效率更高?
PHP8底层开发原理揭秘:如何利用新特性创建出色的Web应用
将字符重新排列以形成回文(如果可能)在C++中
掌握PHP8底层开发原理和新特性:创建高效可扩展的应用程序
服务器性能优化必学:掌握PHP8底层开发原理
PHP8新特性和底层开发原理详解:优化应用性能的终极指南
将 C/C++ 代码转换为汇编语言
深入研究PHP8底层开发原理:创建高效可扩展的应用程序
C++程序查找法向量和迹
PHP8底层开发原理实战指南:提升服务器效能
重排数组,使得当 i 为偶数时,arr[i] >= arr[j],当 i 为奇数时,arr[i] <= arr[j],其中 j < i,使用 C++ 语言实现
Golang的垃圾回收:为什么它可以减少开发人员的负担?
C++程序:将一个数组的所有元素复制到另一个数组中
Golang:构建智能系统的基石
为什么AI开发者应该关注Golang?
在C和C++中,逗号(comma)的用法是用来分隔表达式或语句
PHP8底层开发原理解析及新特性应用实例
利用PHP8底层开发原理解析新特性:如何构建出色的Web应用