php实现的SESSION类
本文实例讲述了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/mysql5.0.x
*-----------------------------------------------------------------
*作者04ie。com
*-----------------------------------------------------------------
*创建时间2010-2-1
*=================================================================
*/
classSession
{
/**
*session默认有效时间
*@accesspublic
*@varineger$_expiry
*/
public$_expiry=3600;
/**
*有效域名
*@accesspublic
*@varstring$_domain
*/
public$_domain='.jb51.net';
//初始化
publicfunction__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
*@accesspublic
*@paramstring$savePath
*@paramstring$sName
*@returntrue
*/
publicfunctionopen($savePath,$sName)
{
$this->_conn=mysql_connect('localhost','root','');
mysql_select_db('databases');
mysql_query('SETNAMES"utf8"');
returntrue;
}
/**
*关闭session
*@accesspublic
*@returnbool
*/
publicfunctionclose()
{
returnmysql_close($this->_conn);
}
/**
*读取session
*@accesspublic
*@paramstring$sidsessionID
*@returnmixed
*/
publicfunctionread($sid)
{
$sql="SELECTdataFROMsessionsWHEREsessionid='%s'";
$sql=sprintf($sql,$sid);
$res=mysql_query($sql,$this->_conn);
$row=mysql_fetch_assoc($res);
return!$row?null:$row['data'];
}
/**
*写入session
*@accesspublic
*@paramstring$sidsessionID
*@paramstring$dataserialize序列化后的session内容
*@return
*/
publicfunctionwrite($sid,$data)
{
$expiry=time()+$this->_expiry;
$sql="REPLACEINTOsessions(sessionid,expiratio
n,data)VALUES('%s','%d','%s')";
$sql=sprintf($sql,$sid,$expiry,$data);
mysql_query($sql,$this->_conn);
returntrue;
}
/**
*销毁session
*@accesspublic
*@paramstring$sidsessionID
*@return
*/
publicfunctiondestroy($sid)
{
$sql="DELETEFROMsessionsWHEREsessionid='%s'";
$sql=sprintf($sql,$sid);
mysql_query($sql,$this->_conn);
returntrue;
}
/**
*清理过期session
*@accesspublic
*@paraminteger$time
*@return
*/
publicfunctiongc($time=0)
{
$sql="DELETEFROMsessionsWHEREexpiration<'%d'";
$sql=sprintf($sql,time());
mysql_query($sql,$this->_conn);
mysql_query('OPTIMIZETABLEsessions');
returntrue;
}
希望本文所述对大家的PHP程序设计有所帮助。
热门推荐
10 对患者生日祝福语简短
11 结婚祝福语简短装备
12 周岁祝福语学生文案简短
13 订婚领证祝福语简短精辟
14 导师获奖祝福语大全简短
15 新婚购房祝福语简短精辟
16 牛年祝福语简短的爱人
17 送芒果的祝福语简短
18 送给学长毕业祝福语简短