怎么用数据库来直接存储session啊? 可以专门建一个表存session啊,很多论坛程序都是这么做的啊,楼主可以看看啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 超时肯定丢失啦,很有可能代码有问题。Session写进数据库,还是要用到Session的(安全) 只是Session写到数据库的话可以节约资源。 数据库存放Session,怎么删除? 感觉容易超时 那可以修改PHP.ini的时间当然可以用数据库的哈,建立个临时表(Mysql里可以用heap类型的表)只时存放session-id等信息,可以看看session_handle()函数 -----好象是这个名字 session_set_save_handler()看看手册把 把session放入数据库? 我到没试过。 不是超时问题!我设的是当IE关闭才删除session,而且是有时丢失有时不丢失,页面跳转很快,也不会是超时!用数据库存就只存session的ID吗?具体变量值还是存临时文件夹下????有没有具体怎么做啊?教我一下! 使用ADODB吧,那里边就有session 到db 的类, 有说明的,很容易的. 这里提供一个类,里面用到了几个自定义函数,贴出来麻烦,看名字 能看出他的作用的<?phperror_reporting(7);$SESS_LIFE = get_cfg_var("session.gc_maxlifetime");//$SESS_LIFE = 1440;//$SESS_LIFE = 300;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();?> 上面已经有人说了,看手册的session_set_save_handler()下面还是有人会说“具体怎么做啊”“有没有代码阿”“可不可以给各例子阿”“教教我啊”唉 !!! http://www.howtodothings.com/showarticle.asp?article=372 mysql_real_escape_string 能防止SQL注入吗 请教一个关于文件上传的简单问题 MYSQL 指定循序排序问题 zend studio中browser output中文乱码 !!! 比较大的数值怎么转化为字符串? curl https的问题 about apache 向高手请教一下输入输出处理问题 为什么if (empty($app->GetCookie('username')))会报错? 谁有PHP类的资料! 为什么我的MYSQL(4.1.7)加上密码就连接不了? php如何导入word,然后在word打印,急。。。在线等
当然可以用数据库的哈,建立个临时表(Mysql里可以用heap类型的表)
只时存放session-id等信息,可以看看session_handle()函数 -----好象是这个名字
看看手册把
有没有具体怎么做啊?教我一下!
error_reporting(7);
$SESS_LIFE = get_cfg_var("session.gc_maxlifetime");
//$SESS_LIFE = 1440;
//$SESS_LIFE = 300;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();
?>