php session高级应用

session在web技术中非常重要,由于网页是一种无状态的连接程序,因此无法得知用户的浏览状态。通过session则可以记录用户的有关信息,以供用户再次以此身份对web服务器提交要求时确认。
例如:用户在浏览电子商务网站的时候,如果没有session,那么用户每次浏览就需要输入账户密码。
1,Session 临时文件
在服务器中,如果将用户所有的Session都保存到临时目录中,会降低服务器的安全性和效率。打开服务器存储的站点会非常的慢。
使用PHP函数session_save_path()函数存储Session临时文件,可以缓解因临时文件的存储导致的服务器效率降低和站点打开缓慢的问题。
示例代码如下:
<?php $path ="./tmp/"; //设置session存储的路径 session_save_path($path); session_start(); $_SESSION['userName']=true; ?>
注意
session_save_path() 必须在session_start() 之前执行。
2,Session 缓存
Session 缓存是将网页中的内容临时存储到IE客户端的Temporary INternet Files文件夹,并且可以设置缓存的时间。
Session的缓存使用的是 session_cache_limiter()函数,其语法如下:
string session_cache_limiter([string cache_limiter]);
其中参数cache_limiter 为public 或private 。同事session不是在服务器端,而是在客户端。在服务器中没有显示。
缓存时间的设置,使用的是函数 session_cache_expire()语法如下:
int session_cache_expire([int new_cahche_expire]);
参数new_cahche_expire 是session缓存的时间数字,单位分钟。
注意:
这两个session函数必须在session_start()函数之前执行
session 缓存页面的示例代码如下:
<?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()函数,代码如下:
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()函数,代码如下:
function _session_close(){
global $handle;
mysql_close($handle);
return(true);
}
(3) 封装 session_read()函数,在函数中设定当前时间的UNIX时间戳,根据$key查找Session名片及内容。代码如下:
function _session_read($key){
golbal $handle; //全局变量$handle 连接数据库
$time =time(); //设定当前时间
$sql ="select session_data from tb_session where session_key = '$key' and 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根据session_id,session_name,失效时间,插入数据库中。如果查询结果不为空,则根据 $key修改数据库中Session存储信息。代码如下:
function _session_write($key,$data){
global $handle;
$time = 60*60;
$lapse_time =time()+$time; //得到UNIX时间戳
$sql = "select session_data from tb_session where session_key ='$key' and session_time>$lapse_time";
$result =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.代码如下:
function _session_destroy(){
global $handle;
$sql ="delete from tb_session where session_key ='$key'";
$result =mysql_query($sql,$handle);
}
(6)封装session_gc(),根据Session的失效时间删除过期的Session,示例代码如下:
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);
}
具体的代码运行就不做了,等到学完面向对象的编程的时候给大家演示下哦。
# php
# session高级应用
# session高级应用详解
# session
# PHP和NodeJs开发的应用如何共用Session
# 解析php中session的实现原理以及大网站应用应注意的问题
# session在PHP大型web应用中的使用
# php session应用实例 登录验证
# PHP4中session登录页面的应用
# 客户端
# 的是
# 数据库中
# 是在
# 临时文件
# 查询结果
# 面向对象
# 为空
# 器中
# 是一种
# 会有
# 这两个
# 给大家
# 如果没有
# 不存在
# 时间为
# 不做
# 非常重要
# 则可
# 来实现
相关文章:
三星网站视频制作教程下载,三星w23网页如何全屏?
建站之星伪静态规则如何设置?
动图在线制作网站有哪些,滑动动图图集怎么做?
如何在IIS7中新建站点?详细步骤解析
如何快速生成ASP一键建站模板并优化安全性?
建站主机如何选?性能与价格怎样平衡?
如何快速生成专业多端适配建站电话?
开封网站制作公司,网络用语开封是什么意思?
如何选择域名并搭建高效网站?
大学网站设计制作软件有哪些,如何将网站制作成自己app?
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
实例解析angularjs的filter过滤器
已有域名和空间如何搭建网站?
宝塔面板如何快速创建新站点?
高防服务器租用指南:配置选择与快速部署攻略
网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?
已有域名和空间如何快速搭建网站?
网站插件制作软件免费下载,网页视频怎么下到本地插件?
建站VPS推荐:2025年高性能服务器配置指南
制作网站的模板软件,网站怎么建设?
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
如何通过网站建站时间优化SEO与用户体验?
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
建站主机选虚拟主机还是云服务器更好?
如何快速搭建高效可靠的建站解决方案?
东莞专业制作网站的公司,东莞大学生网的网址是什么?
建站之星多图banner生成与模板自定义指南
建站之星CMS建站配置指南:模板选择与SEO优化技巧
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
昆明高端网站制作公司,昆明公租房申请网上登录入口?
如何选择PHP开源工具快速搭建网站?
名字制作网站免费,所有小说网站的名字?
赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?
如何挑选优质建站一级代理提升网站排名?
C++时间戳转换成日期时间的步骤和示例代码
官网网站制作腾讯审核要多久,联想路由器newifi官网
在线制作视频的网站有哪些,电脑如何制作视频短片?
如何用已有域名快速搭建网站?
青岛网站建设如何选择本地服务器?
建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略
大型企业网站制作流程,做网站需要注册公司吗?
如何在宝塔面板创建新站点?
济南专业网站制作公司,济南信息工程学校怎么样?
如何快速登录WAP自助建站平台?
,巨量百应是干嘛的?
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
建站之星展会模板:智能建站与自助搭建高效解决方案
移民网站制作流程,怎么看加拿大移民官网?
音响网站制作视频教程,隆霸音响官方网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。