这个session怎么用不起来?
这个session怎么用不起来?
session.php
<?php
require_once("session.inc.php");
if($action === "SS") { //登录验证密码正确后执行
$_SESSION['PASS'] = TRUE;
$_SESSION['USERNAME'] = $_POST['username'];
$_SESSION['LOCATION'] = $_POST['location']; //登录前用户所浏览的网页
$_SESSION['EXPIRY'] = date("Y-m-d H:i:s");
$_SESSION['SID'] = md5($_SESSION['FORUID']['USERID']); //尚未完全
if(udf_sess_write())
header("Location: {$_SESSION['LOCATION']}");
else
header("Location: http://localhost/login.php");
} else { //已有SESSION,进行验证
if($_SESSION['PASS'] === TRUE){
$_SESSION['PASS'] = FALSE;
require_once("get_ip.php"); // 取得用户IP
$row = udf_sess_read();
if($_SESSION['SID'] === $row['sid'] && $uip === $row['uip']) { //加上时间限制
$_SESSION['PASS'] = TRUE;
header("Location: {$_SESSION['LOCATION']}");
} else {
udf_sess_write();
}
}
}
?>
session.inc.php
<?php
function udf_sess_open() {
return TRUE;
}
function udf_sess_close() {
return TRUE;
}
function udf_sess_read () {
$db_connect_string = "host = localhost port = 5432 dbname = users user = abc password = 123456";
$resource_id = pg_pconnect($db_connect_string);
if(isset($resource_id)) {
$db_select_string = "SELECT * FROM sessions WHERE uid = '{$_SESSION['USERNAME']}';";
$result = pg_query($resource_id, $db_select_string);
$numrow = pg_num_rows($result);
if(!$numrow)
return "";
$row = pg_fetch_array($result, 0, PGSQL_ASSOC);
return $row;
} else {
$error_megssage[] = "对不起,数据库未能连接成功。";
header("Location :errors.php");
}
}
function udf_sess_write () {
$db_connect_string = "host = localhost port = 5432 dbname = users user = user_auth_session password = 123456";
$resource_id = pg_pconnect($db_connect_string);
var_dump($resource_id); //////////////////// 有2个值
if(isset($resource_id)) {
$db_update_string = "UPDATE sessions SET sid = '{$_SESSION['SID']}', expiry = '{$_SESSION['EXPIRY']}' WHERE username = '{$_SESSION['USERNAME']}';";
$result = pg_query($resource_id, $db_update_string);
var_dump($result); ///////////////也有2个值
$numrow = pg_num_rows($result);
var_dump($_numrow); /////////////////同样还有2个值,为int(0)
if(!$numrow)
return "";
return TRUE;
} else {
$error_megssages[] = "对不起,数据库未能连接成功。";
header("Location :errors.php");
}
}
function udf_sess_destroy () {
return TRUE;
}
function udf_sess_gc () {
return TRUE;
}
session_set_save_handler("udf_sess_open", "udf_sess_close", "udf_sess_read", "udf_sess_write", "udf_sess_destroy", "udf_sess_gc");
session_start();
?>
有的地方会出现2个值,详见//地方
有什么不对的地方(包括思路),请大家斧正。