php session的应用详细介绍


Posted in PHP onMarch 22, 2017

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();

?>

运行结果如下:

php session的应用详细介绍

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);

php session的应用详细介绍

下面分别将这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 相关文章推荐
基于mysql的论坛(3)
Oct 09 PHP
require(),include(),require_once()和include_once()的异同
Jan 02 PHP
php&amp;mysql 日期操作小记
Feb 27 PHP
php使用反射插入对象示例分享
Mar 11 PHP
PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
Jun 12 PHP
php.ini save_handler 修改不生效的解决办法
Jul 22 PHP
基于php的微信公众平台开发入门实例
Apr 15 PHP
Thinkphp关闭缓存的方法
Jun 26 PHP
php生成动态验证码gif图片
Oct 19 PHP
php微信公众平台开发(一) 配置接口
Dec 06 PHP
ThinkPHP 3.2.2实现事务操作的方法
May 05 PHP
可兼容php5与php7的cURL文件上传功能实例分析
May 11 PHP
php 开发中加密的几种方法总结
Mar 22 #PHP
详解Yii2高级版引入bootstrap.js的一个办法
Mar 21 #PHP
详解Yii2.0 rules验证规则集合
Mar 21 #PHP
php连接mysql数据库
Mar 21 #PHP
Thinkphp实现站点静态化的方法详解
Mar 21 #PHP
php登录超时检测功能实例详解
Mar 21 #PHP
php base64 编码与解码实例代码
Mar 21 #PHP
You might like
php语言中使用json的技巧及json的实现代码详解
2015/10/27 PHP
EarthLiveSharp中cloudinary的CDN图片缓存自动清理python脚本
2017/04/04 PHP
(JS实现)MapBar中坐标的加密和解密的脚本
2007/05/16 Javascript
js直接编辑当前cookie的脚本
2008/09/14 Javascript
两个JavaScript jsFiddle JSBin在线调试器
2010/03/14 Javascript
js 限制数字 js限制输入实现代码
2012/12/04 Javascript
jquery读取xml文件实现省市县三级联动的方法
2015/05/29 Javascript
JavaScript事件详细讲解
2016/06/27 Javascript
进阶之初探nodeJS
2017/01/24 NodeJs
vue中使用refs定位dom出现undefined的解决方法
2017/12/21 Javascript
nodejs实现解析xml字符串为对象的方法示例
2018/03/14 NodeJs
js实现打字小游戏
2019/12/17 Javascript
vue 解决在微信内置浏览器中调用支付宝支付的情况
2020/11/09 Javascript
python爬虫入门教程之糗百图片爬虫代码分享
2014/09/02 Python
使用Python脚本将文字转换为图片的实例分享
2015/08/29 Python
Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
2017/06/20 Python
python实现决策树分类
2018/08/30 Python
Python实现数值积分方式
2019/11/20 Python
神经网络训练采用gpu设置的方式
2021/03/03 Python
涂鸦板简单实现 Html5编写属于自己的画画板
2016/07/05 HTML / CSS
加拿大花店:1800Flowers.ca
2016/11/16 全球购物
美国儿童珠宝在线零售商:Loveivy
2019/05/22 全球购物
CheapTickets香港机票预订网站:CheapTickets.hk
2019/06/26 全球购物
Monki官网:斯堪的纳维亚的独立时尚品牌
2020/11/09 全球购物
学生自我鉴定模板
2013/12/30 职场文书
中学生校园广播稿
2014/01/16 职场文书
新学期标语
2014/06/30 职场文书
心得体会的写法
2014/09/05 职场文书
地方课程教学计划
2015/01/19 职场文书
教师求职自荐信范文
2015/03/04 职场文书
教师师德工作总结2015
2015/07/22 职场文书
React中的Context应用场景分析
2021/06/11 Javascript
Java虚拟机内存结构及编码实战分享
2022/04/07 Java/Android
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
2022/04/14 Python
索尼ICF-5900W收音机测评
2022/04/24 无线电
生命的关键成分来自太空?陨石说是的
2022/04/29 数码科技