听说可以把session存到数据库,这样可以设置多久失效都可以

register_about 2005-05-26 01:12:48
如题,谁可以写写这段代码啊?
...全文
191 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
BeerWang 2005-05-26
  • 打赏
  • 举报
回复
register_about(register_about)

再问下,PHP。INI中session.save_handler = files 一定要改为user才能把SESSION保存到数据库中吗?

------------------------------------------------

不用,在加了上面这段代码后,把

session.auto_start = 1

改成

session.auto_start = 0
underone 2005-05-26
  • 打赏
  • 举报
回复
好像不行吧
BeerWang 2005-05-26
  • 打赏
  • 举报
回复
<?php
error_reporting(7);


//这里设置的就是时间
$SESS_LIFE = 900;

function sess_open($save_path,$session_name) {
sess_gc(0);
return true;
}

function sess_close() {
return true;
}

function sess_read($key) {

global $DB,$db_prefix,$session,$onlineuser;
$session = $DB->fetch_one_array("SELECT * FROM ".$db_prefix."session WHERE sessionid='$key'");
if (!empty($session) AND $session[expiry]>time()) {
return $session[value];
} else {
$onlineuser++;
return "";
}

}

function sess_write($key,$val) {
global $DB,$db_prefix,$SESS_LIFE,$pauserinfo,$session;
$expiry = time()+$SESS_LIFE;
$value = addslashes($val);

$ipaddress = getip();
$useragent = $_SERVER[HTTP_USER_AGENT];
$REQUEST_URI = $_SERVER[REQUEST_URI];

if (empty($session) AND $key!=$session[key]) {
$query = $DB->query("INSERT INTO ".$db_prefix."session (sessionid,expiry,value,userid,ipaddress,useragent,location,lastactivity)
VALUES ('$key',$expiry,'$value','$pauserinfo[userid]','".addslashes($ipaddress)."','".addslashes($useragent)."','".addslashes($REQUEST_URI)."','".time()."')");
} else {
$query = $DB->query("UPDATE ".$db_prefix."session SET
expiry='$expiry',
userid='$pauserinfo[userid]',
value='$value',
ipaddress='".addslashes($ipaddress)."',
useragent='".addslashes($useragent)."',
location='".addslashes($REQUEST_URI)."',
lastactivity='".time()."'
WHERE sessionid='$key'");
}
if ($pauserinfo[userid]!=0) {
if ((time()-$pnuserinfo[lastactivity])>$SESS_LIFE) {
$DB->query("UPDATE ".$db_prefix."user SET lastvisit=lastactivity,lastactivity='".time()."' WHERE userid='$pauserinfo[userid]'");
}
else {
$DB->query("UPDATE ".$db_prefix."user SET lastactivity='".time()."' WHERE userid='$pauserinfo[userid]'");
}
}
return $query;
}

function sess_destroy($key) {
global $DB,$db_prefix;
return $DB->query("DELETE FROM ".$db_prefix."session WHERE sessionid='$key'");
}

function sess_gc($maxlifetime) {
global $DB,$db_prefix;
$query = $DB->query("DELETE FROM ".$db_prefix."session WHERE expiry<".time()."");
return $DB->affected_rows();
}

session_set_save_handler(
"sess_open",
"sess_close",
"sess_read",
"sess_write",
"sess_destroy",
"sess_gc");

@session_start();

?>
hucool 2005-05-26
  • 打赏
  • 举报
回复
up
register_about 2005-05-26
  • 打赏
  • 举报
回复
再问下,PHP。INI中session.save_handler = files 一定要改为user才能把SESSION保存到数据库中吗?

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧