• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

PHP实现session对象封装

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

 

<?php
class Session
{
	private $db;				// 设置数据库变量
	private $expiry = 3600;		// 设置Session失效时间	
	
	public function Session()
	{
		session_set_save_handler(array(& $this,'_session_open'),
								array(& $this,'_session_close'),
								array(& $this,'_session_read'),
								array(& $this,'_session_write'),
								array(& $this,'_session_destroy'),
								array(& $this,'_session_gc')
		);	
	}	
	
	public function _session_open($save_path,$session_name)
	{
		$this->db = mysql_connect('localhost','root','123456') or die ("数据库连接失败!");
		mysql_select_db("db_database11",$this->db);
		return(true);
	}
	
	public function _session_close()
	{
		mysql_close($this->db);
		return(true);
	}
	
	public function _session_read($key)
	{
		$time = time();							// 设定当前时间
		$sql = "select session_data from tb_session where session_key = '$key' and session_time > $time";
		$result = mysql_query($sql,$this->db);
		$row = mysql_fetch_array($result);
		if ($row)
		{
			return($row['session_data']);			// 返回Session名称及内容
		}else
		{
			return(false);
		}
	}
	
	public function _session_write($key,$data)
	{
		$lapse_time = time() + $this->time;					// 得到Unix时间戳
		$sql = "select session_data from tb_session where session_key = '$key' and session_time > $lapse_time";
		$result = mysql_query($sql,$this->db);
		if (mysql_num_rows($result) == 0 )				// 没有结果
		{
			$sql = "insert into tb_session values('$key','$data',$lapse_time)";		// 插入数据库sql语句
			$result = mysql_query($sql,$this->db);
		}else
		{
			$sql = "update tb_session set session_key = '$key',session_data = '$data',session_time = $lapse_time where session_key = '$key'";												// 修改数据库sql语句
			$result = mysql_query($sql,$this->db);
		}
		return($result);
	}
	
	public function _session_destroy($key)
	{
		$sql = "delete from tb_session where session_key = '$key'";					// 删除数据库sql语句
		$result = mysql_query($sql,$this->db);
		return($result);
	}
	
	public function _session_gc($expiry_time)
	{
		$expiry_time = time();									// 将参数$expiry_time赋值为当前时间戳
		$sql = "delete from tb_session where expiry_time < $expiry_time";	// 删除数据库sql语句
		$result = mysql_query($sql,$this->db);
		return($result);
	}
}
$_session_new = new Session();
session_start();

$_SESSION['SID'] = true;
?>

  

这里令人费解的是,$this本来就是引用类型,按理说PHP的引用操作符&只是针对基本变量(非引用类型)所采取的一种补救措施,这里针对$$this进行引用,又是为何?

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
php二维数组去重合并将相同数量累加发布时间:2022-07-10
下一篇:
CGI,FastCGI,PHP-CGI与PHP-FPM发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap