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 相关文章推荐
PHP 中执行系统外部命令
Oct 09 PHP
一个简单计数器的源代码
Oct 09 PHP
AJAX for PHP简单表数据查询实例
Jan 02 PHP
php HtmlReplace输入过滤安全函数
Jul 03 PHP
PHP提示Notice: Undefined variable的解决办法
Nov 24 PHP
php登陆页的密码处理方式分享
Oct 14 PHP
PHP生成制作验证码的简单实例
Jun 12 PHP
PHP简单获取多个checkbox值的方法
Jun 13 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
May 11 PHP
PHP实现的日历功能示例
Sep 01 PHP
php实现的证件照换底色功能示例【人像抠图/换背景图】
May 29 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
Mar 09 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
全国FM电台频率大全 - 11 浙江省
2020/03/11 无线电
php skymvc 一款轻量、简单的php
2011/06/28 PHP
PHP实现删除字符串中任何字符的函数
2015/08/11 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
php实现等比例压缩图片
2018/07/26 PHP
Javascript 获取链接(url)参数的方法[正则与截取字符串]
2010/02/09 Javascript
jQuery获取地址栏参数插件(模仿C#)
2010/10/26 Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
2016/01/26 Javascript
ionic 上拉菜单(ActionSheet)实例代码
2016/06/06 Javascript
nodejs 最新版安装npm 的使用详解
2018/01/18 NodeJs
自己动手封装一个React Native多级联动
2018/09/19 Javascript
jquery实现动态添加附件功能
2018/10/23 jQuery
[53:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第三场 6.2
2018/06/03 DOTA
Python中类的初始化特殊方法
2017/12/01 Python
django的分页器Paginator 从django中导入类
2019/07/25 Python
决策树剪枝算法的python实现方法详解
2019/09/18 Python
jenkins配置python脚本定时任务过程图解
2019/10/29 Python
Python实现FLV视频拼接功能
2020/01/21 Python
Python Django中的STATIC_URL 设置和使用方式
2020/03/27 Python
pandas中read_csv、rolling、expanding用法详解
2020/04/21 Python
用CSS3实现背景渐变的方法
2015/07/14 HTML / CSS
CSS3模拟IOS滑动开关效果
2016/09/28 HTML / CSS
HTML5在线预览PDF的示例代码
2017/09/14 HTML / CSS
国际知名设计师时装商店:Coggles
2016/09/05 全球购物
美体小铺瑞典官方网站:The Body Shop瑞典
2018/01/27 全球购物
玛蒂尔达简服装:Matilda Jane Clothing
2019/02/13 全球购物
C/C++程序员常见面试题二
2015/11/19 面试题
写出程序把一个链表中的接点顺序倒排
2014/04/28 面试题
中专毕业自我鉴定
2013/10/16 职场文书
服务整改报告
2014/11/06 职场文书
小学生五一劳动节演讲稿
2015/03/18 职场文书
党小组评议意见
2015/06/02 职场文书
永远是春天观后感
2015/06/12 职场文书
MySQL查询学习之基础查询操作
2021/05/08 MySQL
pyqt5蒙版遮罩mask,setmask的使用
2021/06/11 Python
Python使用海龟绘图实现贪吃蛇游戏
2021/06/18 Python