创建session+php,php自定义session示例分享

下面为session类的代码

class session

{

static function init()

{

session_set_save_handler(

array("session","open"),

array("session","close"),

array("session","read"),

array("session","write"),

array("session","destroy"),

array("session","gc")

);

}

static function open($save_path,$session_name)

{

echo "session opening!
";

/*global $db,$REMOTE_ADDR;

$rs = $db->Execute("select * from Sessions where SessionID='".session_id()."'");

$arry=$rs->FetchRow();

if( $rs && $arry)

{

$db->Execute("update Sessions set SessionLast=NOW() where SessionID='".session_id()."'");

}

else

{

$query = "insert into Sessions set SessionID='".session_id()."',SessionName='$REMOTE_ADDR',SessionLast='NOW()'";

//echo $query;

$db->Execute($query);

}*/

return true;

}

static function close()

{

return(true);

}

static function read($id)

{

echo "session reading now!
";

global $db;

return true;

$timenow = strftime("%Y-%m-%d %H:%M:%S", time());

$query = "select SessionData from Sessions where SessionID='$id' and SessionLast > '$timenow'";

$rs = $db->Execute($query);

if(list($SessionData) = $rs->FetchRow())

{

//echo $SessionData;

return $SessionData;

}

else

{

return false;

}

}

static function write($id,$sess_data)

{

echo "session writing now!
";

global $db;

$rs = $db->Execute("select SessionID from Sessions where SessionID='$id'");

$num = $rs->RecordCount();

$unix_time = time()+MY_SESS_TIME;

//echo MY_SESS_TIME;

$dateleft = strftime("%Y-%m-%d %H:%M:%S", $unix_time);

if($num <= 0)

{

$sql = "insert into Sessions set SessionData='$sess_data', SessionName='".$_SERVER["REMOTE_ADDR"]."', SessionLast='$dateleft', SessionID='".session_id()."'";

}

else

{

$sql = "update Sessions set SessionData='$sess_data', SessionName='".$_SERVER["REMOTE_ADDR"]."', SessionLast='$dateleft' where SessionID='$id'";

}

$db->Execute($sql);

}

static function destroy($id)

{

echo "session destroying now!
";

global $db;

$sql = "DELETE FROM Sessions WHERE `SessionID` = '$id'";

$rs = $db->Execute($sql);

return $rs;

// $sess_file = "$sess_save_path/sess_$id";

//return(@unlink($sess_file));

}

/*********************************************

* WARNING - You will need to implement some *

* sort of garbage collection routine here. *

*********************************************/

static function gc($maxlifetime)

{

echo "session maxlifetime now!
";

global $db;

$timenow = strftime("%Y-%m-%d %H:%M:%S", time());

$sql = "DELETE FROM `$table_sessions` WHERE `SessionLast` < '$timenow'";

return $sess_db->Execute($sql);

//echo "now gc!
";

return true;

}

// proceed to use sessions normally

}

使用方法

include("session.class.php");

session::init();

session_start();

define("MY_SESS_TIME", 3600); //SESSION 生存时长

$_SESSION["test"] = "abcdef";

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值