sess.php

来自「极限OA开源系统」· PHP 代码 · 共 110 行

PHP
110
字号
<?php

if(!defined('KIN_UNION')){die("Hacking attempt");}


 /* if database time and system time is difference is greater than this, then give warning */
define('ET_SESSION_SYNCH_SECS',60); 
define('ET_SESSION_OPTIMIZE',1);

$ET_SESS_LIFE = ini_get('session.gc_maxlifetime');
if ($ET_SESS_LIFE <= 1) {
 	$ET_SESS_LIFE=1440;
}
$ET_SESSION_CRC = false;


if (empty($SESS_TABLE)){
	$SESS_TABLE = $tablepre.'sessions';
}
	

function et_sess_open($save_path, $session_name,$persist=true) {
	GLOBAL $db;
	if (isset($db)) return true;
	else die('session db error!');
}

function et_sess_close() {
	global $db;
	if ($db) $db->Close();
	return true;
}

function et_sess_read($key) {
	global $db,$SESS_TABLE,$ET_SESSION_CRC;
	
	$qry = "SELECT data FROM $SESS_TABLE WHERE sesskey = '$key' AND expiry > " . time();
	$qid = $db->query($qry);
	if (list($v) = $db->fetch_row($qid)) {
		$ET_SESSION_CRC = $key;
		return $v;
	}
	return '';
}

function et_sess_write($key, $val) 
{
	global	$db, $ET_SESS_LIFE, $SESS_TABLE,$ET_SESSION_CRC,$etext;

	$expiry = time() + $ET_SESS_LIFE;
	
	$value = addslashes($val);

	if ($ET_SESSION_CRC !== false && $ET_SESSION_CRC == $key) {
		if($etext) $condi = ",username='$etext[username]',gid='$etext[gid]',ip='$etext[ip]',hidden='$etext[hidden]'";
		$qry = "UPDATE $SESS_TABLE SET expiry='$expiry',data='$value'$condi WHERE sesskey='$key' AND expiry >= " . time();
		$rs = $db->query($qry);
		return true;
	}

	if($etext) {
		$qry = "INSERT INTO $SESS_TABLE (sesskey,expiry,data,username,gid,ip,hidden)
			values ('$key', '$expiry', '$value','$etext[username]','$etext[gid]','$etext[ip]','$etext[hidden]')";
	}else {
		$qry = "INSERT INTO $SESS_TABLE (sesskey,expiry,data) VALUES ('$key', '$expiry', '$value')";
	}
	$qid = $db->query($qry,1);
	return $qid;
}

function et_sess_destroy($key) 
{
	global $db, $SESS_TABLE;
	
	$qry = "DELETE FROM $SESS_TABLE WHERE sesskey = '$key'";
	$rs = $db->query($qry);
	return $rs ? true : false;
}

function et_sess_gc($maxlifetime) 
{
	global $ET_SESS_DEBUG, $db, $SESS_TABLE;
	
	
	$qry = "DELETE FROM $SESS_TABLE WHERE expiry < " . time();
	$db->query($qry);
	
	// suggested by Cameron, "GaM3R" <gamr@outworld.cx>
	if (defined('ET_SESSION_OPTIMIZE')) {
	
		$opt_qry = 'OPTIMIZE TABLE '.$SESS_TABLE;
		$db->query($opt_qry);
		
	}
		
	return true;
}

session_module_name('user'); 
session_set_save_handler(
	"et_sess_open",
	"et_sess_close",
	"et_sess_read",
	"et_sess_write",
	"et_sess_destroy",
	"et_sess_gc");

session_start();
et_sess_gc($maxlifetime);
?>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?