php实现的SESSION类


Posted in PHP onDecember 02, 2014

本文实例讲述了php实现的SESSION类。分享给大家供大家参考。具体分析如下:

关于 SESSION 在 php 中的应用是必不要少的,是最重要的功能之一。SESSION 在网络应用中,称为“会话”,我们通常理解为存储特定用户会话所需的信息,这样,当用户在网站页面之间跳转时,存储的 SESSION 值不会丢失,而是在整个用户会话中一直存活下去。通俗一点讲,就是当用户A上网时,会创建一个ID(a)值进行保存下来,如果你的ID(A)值没有进行注销,下次上网时,这个网站还会记得你的ID(A)值,这个时候就可以在网上进行调用你的ID(A)值了,比如欢迎您ID(A)值再一次访问。

关于在 PHP 中应用 SESSION 值是很简单的,只要在顶端提前输入 session_start() 开始会话即可,下面就可以进行使用 SESSION 了,这只是小网站的应用方法,实际上,SESSION 自身还有许多属性,比如 SESSION周期,调用SESSION,SESSION数据有效期,SESSION保存,SESSION注销等等,如果有了这些属性,看起来才算是一个比较规范的SESSION应用会话。

下面是一个完整的 Session 类,整合了 Session 最基本的属性值,其中,打开,关闭与清理是符合php编程规范的,这也是一个很好的习惯。小小的说明一下,如果网站不是大量使用 Session 类,基本上就没必要使用 SESSION 类了。

<?php 

/** 

* 文件描述 Session类 

* ================================================================= 

* 文件名称 session.class.php 

* ----------------------------------------------------------------- 

* 适用环境: PHP5.2.x / mysql 5.0.x 

* ----------------------------------------------------------------- 

* 作 者 04ie。com 

* ----------------------------------------------------------------- 

* 创建时间 2010-2-1 

* ================================================================= 

*/ 

class Session 

{ 

/** 

* session默认有效时间 

* @access public 

* @var ineger $_expiry 

*/ 

public $_expiry = 3600; 

/** 

* 有效域名 

* @access public 

* @var string $_domain 

*/ 

public $_domain = '.3water.com'; 

//初始化 

public function __construct() 

{ 

ini_set('session.use_trans_id', 0); 

ini_set('session.gc_maxlifetime', $this->_expiry); 

ini_set('session.use_cookie', 1); 

ini_set('session.cookie_path', '/'); 

ini_set('session.cookie_domain', $this->_domain); 

session_module_name('user'); 

session_set_save_handler( 

array(&$this, 'open'), 

array(&$this, 'close'), 

array(&$this, 'read'), 

array(&$this, 'write'), 

array(&$this, 'destroy'), 

array(&$this, 'gc') 

); 

session_start(); 

} 

/** 

* 打开session 

* @access public 

* @param string $savePath 

* @param string $sName 

* @return true 

*/ 

public function open($savePath, $sName) 

{ 

$this->_conn = mysql_connect('localhost', 'root', ''); 

mysql_select_db('databases'); 

mysql_query('SET NAMES "utf8"'); 

return true; 

} 

/** 

* 关闭session 

* @access public 

* @return bool 

*/ 

public function close() 

{ 

return mysql_close($this->_conn); 

} 

/** 

* 读取session 

* @access public 

* @param string $sid sessionID 

* @return mixed 

*/ 

public function read($sid) 

{ 

$sql = "SELECT data FROM sessions WHERE sessionid='%s'"; 

$sql = sprintf($sql, $sid); 

$res = mysql_query($sql, $this->_conn); 

$row = mysql_fetch_assoc($res); 

return !$row ? null : $row['data']; 

} 

/** 

* 写入session 

* @access public 

* @param string $sid sessionID 

* @param string $data serialize序列化后的session内容 

* @return 

*/ 

public function write($sid, $data) 

{ 

$expiry = time() + $this->_expiry; 

$sql = "REPLACE INTO sessions (sessionid,expiratio 

n,data) VALUES ('%s', '%d', '%s')"; 

$sql = sprintf($sql, $sid, $expiry, $data); 

mysql_query($sql, $this->_conn); 

return true; 

} 

/** 

* 销毁session 

* @access public 

* @param string $sid sessionID 

* @return 

*/ 

public function destroy($sid) 

{ 

$sql = "DELETE FROM sessions WHERE sessionid='%s'"; 

$sql = sprintf($sql, $sid); 

mysql_query($sql, $this->_conn); 

return true; 

} 

/** 

* 清理过期session 

* @access public 

* @param integer $time 

* @return 

*/ 

public function gc($time = 0) 

{ 

$sql = "DELETE FROM sessions WHERE expiration < '%d'"; 

$sql = sprintf($sql, time()); 

mysql_query($sql, $this->_conn); 

mysql_query('OPTIMIZE TABLE sessions'); 

return true; 

}

希望本文所述对大家的PHP程序设计有所帮助。

PHP 相关文章推荐
深入了解php4(1)--回到未来
Oct 09 PHP
php学习笔记之 函数声明
Jun 09 PHP
php 解决旧系统 查出所有数据分页的类
Aug 27 PHP
php防止站外远程提交表单的方法
Oct 20 PHP
Opcache导致php-fpm崩溃nginx返回502
Mar 02 PHP
PHP实现的蚂蚁爬杆路径算法代码
Dec 03 PHP
浅谈php和js中json的编码和解码
Oct 24 PHP
php记录搜索引擎爬行记录的实现代码
Mar 02 PHP
PHP支付宝当面付2.0代码
Dec 21 PHP
PHP实现浏览器格式化显示XML的方法示例
Jan 22 PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
Feb 25 PHP
PhpStorm+xdebug+postman调试技巧分享
Sep 15 PHP
thinkphp配置连接数据库技巧
Dec 02 #PHP
Yii核心组件AssetManager原理分析
Dec 02 #PHP
php实现微信公众平台账号自定义菜单类
Dec 02 #PHP
php获取CSS文件中图片地址并下载到本地的方法
Dec 02 #PHP
PHP间隔一段时间执行代码的方法
Dec 02 #PHP
ThinkPHP采用原生query实现关联查询left join实例
Dec 02 #PHP
php面象对象数据库操作类实例
Dec 02 #PHP
You might like
php中防止伪造跨站请求的小招式
2011/09/02 PHP
php输入流php://input使用浅析
2014/09/02 PHP
php获取客户端电脑屏幕参数的方法
2015/01/09 PHP
php实现的mysqldb读写分离操作类示例
2017/02/07 PHP
编写Js代码要注意的几条规则
2010/09/10 Javascript
浅析Node.js查找字符串功能
2014/09/03 Javascript
jQuery 中$(this).index与$.each的使用指南
2014/11/20 Javascript
javascript内置对象操作详解
2015/02/04 Javascript
简介JavaScript中fixed()方法的使用
2015/06/08 Javascript
JavaScript获取各大浏览器信息图示
2015/11/20 Javascript
JS跨域解决方案之使用CORS实现跨域
2016/04/14 Javascript
浅析jQuery 3.0中的Data
2016/06/14 Javascript
jQuery实现左侧导航模块的显示与隐藏效果
2016/07/04 Javascript
微信小程序 空白页重定向解决办法
2017/06/27 Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
2018/03/20 Javascript
在Web关闭页面时发送Ajax请求的实现方法
2019/03/07 Javascript
JS实现滑动导航效果
2020/01/14 Javascript
Python中的zip函数使用示例
2015/01/29 Python
Python NumPy库安装使用笔记
2015/05/18 Python
在cmd中运行.py文件: python的操作步骤
2018/05/12 Python
Python采集猫眼两万条数据 对《无名之辈》影评进行分析
2018/12/05 Python
python字典排序的方法
2019/10/12 Python
python实发邮件实例详解
2019/11/11 Python
将tensorflow模型打包成PB文件及PB文件读取方式
2020/01/23 Python
TensorBoard 计算图的可视化实现
2020/02/15 Python
手工制作的意大利皮革运动鞋:KOIO
2020/01/05 全球购物
国际商务系学生个人的自我评价
2013/11/26 职场文书
面包店的创业计划书范文
2014/01/16 职场文书
最新结婚典礼主持词
2014/03/14 职场文书
房屋公证委托书
2014/04/03 职场文书
2014年清明节网上祭英烈寄语
2014/04/09 职场文书
学生手册评语
2014/05/05 职场文书
超市周年庆活动方案
2014/08/16 职场文书
幼师辞职信范文大全
2015/05/12 职场文书
如何用JavaScript实现一个数组惰性求值库
2021/05/05 Javascript
Java 多线程协作作业之信号同步
2022/05/11 Java/Android