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 相关文章推荐
一个好用的分页函数
Nov 16 PHP
php环境配置 php5 mysql5 apache2 phpmyadmin安装与配置
Nov 17 PHP
PHP中的session永不过期的解决思路及实现方法分享
Apr 20 PHP
zf框架的zend_cache缓存使用方法(zend框架)
Mar 14 PHP
php判断类是否存在函数class_exists用法分析
Nov 14 PHP
PHP针对JSON操作实例分析
Jan 12 PHP
php使用cookie保存用户登录的用户名实例
Jan 26 PHP
开启PHP的伪静态模式
Dec 31 PHP
php实现生成验证码实例分享
Apr 10 PHP
php中让人头疼的浮点数运算分析
Oct 10 PHP
php微信公众号开发(3)php实现简单微信文本通讯
Dec 15 PHP
PHP排序算法之冒泡排序(Bubble Sort)实现方法详解
Apr 20 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数组合并的二种方法
2014/03/21 PHP
PHP面向对象程序设计继承用法简单示例
2018/12/28 PHP
javascript显示选择目录对话框的代码
2008/11/10 Javascript
javascript dom 基本操作小结
2010/04/11 Javascript
jQuery 获取对象 定位子对象
2010/05/31 Javascript
JavaScript实现MIPS乘法模拟的方法
2015/04/17 Javascript
原生JavaScript实现异步多文件上传
2015/12/02 Javascript
jQuery获取radio选中项的值实例
2016/06/18 Javascript
AngularJs ng-repeat 嵌套如何获取外层$index
2016/09/21 Javascript
移动端点击态处理的三种实现方式
2017/01/12 Javascript
全面总结Javascript对数组对象的各种操作
2017/01/22 Javascript
js CSS3实现卡牌旋转切换效果
2017/07/04 Javascript
React组件重构之嵌套+继承及高阶组件详解
2018/07/19 Javascript
javascript设计模式 ? 享元模式原理与用法实例分析
2020/04/15 Javascript
vue 需求 data中的数据之间的调用操作
2020/08/05 Javascript
[47:03]完美世界DOTA2联赛PWL S3 access vs LBZS 第一场 12.20
2020/12/23 DOTA
Python实现脚本锁功能(同时只能执行一个脚本)
2017/05/10 Python
python实现图片批量压缩程序
2018/07/23 Python
python flask框架实现传数据到js的方法分析
2019/06/11 Python
如何基于Python实现自动扫雷
2020/01/06 Python
Django中从mysql数据库中获取数据传到echarts方式
2020/04/07 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
2020/06/18 Python
Python 添加文件注释和函数注释操作
2020/08/09 Python
Python如何批量生成和调用变量
2020/11/21 Python
python Autopep8实现按PEP8风格自动排版Python代码
2021/03/02 Python
外语专业毕业生个人的自荐信
2013/11/19 职场文书
学生实习介绍信
2014/01/15 职场文书
xxx同志考察材料
2014/02/07 职场文书
对公司合理化的建议书
2014/03/12 职场文书
经济管理毕业生求职信
2014/03/15 职场文书
财务部副经理岗位职责范本
2014/06/17 职场文书
企业开业庆典答谢词
2015/01/20 职场文书
公司酒会致辞
2015/07/30 职场文书
pandas中对文本类型数据的处理小结
2021/11/01 Python
css3应用示例:新增的选择器
2022/03/16 HTML / CSS
python可视化分析绘制带趋势线的散点图和边缘直方图
2022/06/25 Python