这个session怎么用不起来?

ValiantWilliam 2006-02-21 04:25:49
这个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个值,详见//地方

有什么不对的地方(包括思路),请大家斧正。
...全文
200 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ValiantWilliam 2006-02-24
  • 打赏
  • 举报
回复
高手帮忙看看
ValiantWilliam 2006-02-22
  • 打赏
  • 举报
回复
再顶,再顶!

UP~ UP AGIN~
ValiantWilliam 2006-02-22
  • 打赏
  • 举报
回复
在 session.php 文件中开头就引用了 session.inc.php 文件,且 session.inc.php 文件中有 session_start();

session.inc.php 是将 Session 存入数据库,是按照网上的写法做的。
kiraymd 2006-02-21
  • 打赏
  • 举报
回复
应该在session.php的开头加上:

if (!isset($_SESSION)) {
session_start();
}
ValiantWilliam 2006-02-21
  • 打赏
  • 举报
回复
是2个不同的文件呀!session.php & session.inc.php
keaizhong 2006-02-21
  • 打赏
  • 举报
回复
session_start();
应该放在第一行吧。。。

21,890

社区成员

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

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