代码如下:<?php
$db_res_id = pg_connect("host=localhost port=5432 dbname=abc user=postgres password=123456");function open() {
return true;
}function close() {
return true;
}function read() {
return true;
}function write($sess_id, $sess_userid) {
global $db_res_id; $query_string = "INSERT INTO session (sess_id, sess_userid) VALUES ('$sess_id', '$sess_userid');"; echo $query_string . '<br />'; return true;
}function destroy() {
return true;
}function gc() {
return true;
}session_set_save_handler('open', 'close', 'read', 'write', 'destroy', 'gc');
session_start();
$sess_id = session_id();
write($sess_id, '12345678');
执行后如下:
INSERT INTO session (sess_id, sess_userid) VALUES ('18e92405e5f379009128062fd217b90d', '12345678');
INSERT INTO session (sess_id, sess_userid) VALUES ('18e92405e5f379009128062fd217b90d', '');如何会有两个 INSERT 语句?第二个 sess_userid 还无值。何解?如何解决?
$db_res_id = pg_connect("host=localhost port=5432 dbname=abc user=postgres password=123456");function open() {
return true;
}function close() {
return true;
}function read() {
return true;
}function write($sess_id, $sess_userid) {
global $db_res_id; $query_string = "INSERT INTO session (sess_id, sess_userid) VALUES ('$sess_id', '$sess_userid');"; echo $query_string . '<br />'; return true;
}function destroy() {
return true;
}function gc() {
return true;
}session_set_save_handler('open', 'close', 'read', 'write', 'destroy', 'gc');
session_start();
$sess_id = session_id();
write($sess_id, '12345678');
执行后如下:
INSERT INTO session (sess_id, sess_userid) VALUES ('18e92405e5f379009128062fd217b90d', '12345678');
INSERT INTO session (sess_id, sess_userid) VALUES ('18e92405e5f379009128062fd217b90d', '');如何会有两个 INSERT 语句?第二个 sess_userid 还无值。何解?如何解决?
你改变了SESSION的存储方式,不需要你自己去调用哪些函数的
操作SESSION还是和以前一样操作就好了,只不过现在是存放到数据库里而已
你可能是要存储一个用户的ID吧,你可以在用户登录完成后,你直接去修改这个表里的数据,而不需要再调用一次write函数。
还有就是SESSION的超时也要写到这些函数里。
这是我以前写的一些代码:
function sess_open($save_path,$session_name) {
$strsql = "Delete From ".Cls_Data::$mPrefix."sessions Where expiry < ".time();
Cls_Data::Query($strsql);
return true;
} function sess_close() {
return true;
} function sess_read($key) {
$strsql = "Select value From ".Cls_Data::$mPrefix."sessions Where sid = '".$key."' And expiry >".time();
$query = Cls_Data::Query($strsql);
if($qrs = Cls_Data::Execute($query)) {
return $qrs[0];
} else {
return false;
}
} function sess_write($key,$val) {
$strsql = "Select value From ".Cls_Data::$mPrefix."sessions Where sid = '".$key."' And expiry >".time();
$query = Cls_Data::Query($strsql);
if($qrs = Cls_Data::Execute($query)) {
$strsql = "Update ".Cls_Data::$mPrefix."sessions Set value='".$val."',expiry=".(time()+Cls_Data::$mSessionLifeTime)." Where sid='".$key."' And expiry>".time();
Cls_Data::Query($strsql);
} else {
$strsql = "Insert Into ".Cls_Data::$mPrefix."sessions VALUES('".$key."',".(time()+Cls_Data::$mSessionLifeTime).",'".$val."')";
Cls_Data::Query($strsql);
}
return true;
} function sess_destroy($key) {
$strsql = "Delete From ".Cls_Data::$mPrefix."sessions Where sid = '".$key."'";
Cls_Data::Query($strsql);
return true;
} function sess_gc($maxlifetime) {
$strsql = "Delete From ".Cls_Data::$mPrefix."sessions Where expiry <".time();
Cls_Data::Query($strsql);
return true;
}
session_module_name('user');
session_set_save_handler('sess_open','sess_close','sess_read','sess_write','sess_destroy','sess_gc');
session_start();