⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usesession.php

📁 PHP4_0入门与提高源程序代码
💻 PHP
字号:
<?php
//确保PHP配置文件设置正确
assert(ini_get('session.save_handler') == 'user');

//取得存储session数据的表格名称,默认为:'php_sessions'
$pgsql_session_table = ini_get('session.save_path');
if (empty($pgsql_session_table)) $pgsql_session_table = 'php_sessions';

//全局变量,PostgreSQL 数据库连接句柄
$pgsql_session_handle = 0;

/*********************************************
function:	建立一个新的session.
$param	$save_path    session.save_path的值
$param	$session_name session ('PHPSESSID')名称
*********************************************/
function pgsql_session_open($save_path, $session_name)
{
    global $pgsql_session_handle;
    //请参考PHP手册中的pg_pconnect()函数
    $params = 'dbname=test user=jon';

    $pgsql_session_handle = pg_pconnect($params);	//连接数据库服务器
    return ($pgsql_session_handle != 0);
}

/***************************************
function:	关闭当前的session.
***************************************/
function pgsql_session_close()
{
    global $pgsql_session_handle;
    if (isset($pgsql_session_handle)) {
        return pg_close($pgsql_session_handle);	//断开与服务器的连接
    }
    return true;
}

/**************************************
function:	从数据库中读取session数据
$param	$key	请求的session ID.
*************************************/
function pgsql_session_read($key)
{
    global $pgsql_session_handle, $pgsql_session_table;
    $key = addslashes($key);
    //构造并执行SQL语句
    $query = "select data from $pgsql_session_table where session_id = '$key'";
    $result = @pg_exec($pgsql_session_handle, $query);	//执行SQL语句
//把数据保存到$data变量并返回
    if (isset($result) && $result && (pg_numrows($result) == 1)) {
        $data = pg_result($result, 0, 'data');
        pg_freeresult($result);
        return $data;
    } else {
        return false;
    }
}

/************************************
function:	把session数据写出到数据库中
$param	$key	当前session ID.
$param	$val		存放session数据的字符串.
***************************************/
function pgsql_session_write($key, $val)
{
    global $pgsql_session_handle, $pgsql_session_table;
    $key = addslashes($key);
    $val = addslashes($val);
    $now = time();
    //从当前session中删除所有数据,然后插入一个新的
    //包含当前session数据的行。所有操作使用一个语句
    $query = 'begin; ';
    $query .= "delete from $pgsql_session_table where session_id = '$key'; ";
    $query .= "insert into $pgsql_session_table values('$key', $now, '$val'); ";
    $query .= 'commit;';
    $result = @pg_exec($pgsql_session_handle, $query);

    $ret = (pg_cmdtuples($result) == 0);
    pg_freeresult($result);

    return ($ret);
}

/*************************************
function:	删除session记录.
$param	$key	当前的session ID.
*************************************/
function pgsql_session_destroy($key)
{
    global $pgsql_session_handle, $pgsql_session_table;
$key = addslashes($key);
//删除session记录
    $query = "delete from $pgsql_session_table where session_id = '$key'";
    $result = @pg_exec($pgsql_session_handle, $query);

    $ret = ($result != 0);
    pg_freeresult($result);

    return $ret;
}

/******************************************
function:	删除超时的session的内容
$param	$maxlifetime  session的最长有效时间.
******************************************/
function pgsql_session_gc($maxlifetime)
{
    global $pgsql_session_handle, $pgsql_session_table;
    $expiry = time() - $maxlifetime;	//计算超时的时间
    $query = "delete from $pgsql_session_table where last_active < $expiry";
    $result = @pg_exec($pgsql_session_handle, $query);	//删除超时的记录
    $ret = ($result != 0);
    pg_freeresult($result);
    return $ret;
}

//注册上面定义的session处理函数。
session_set_save_handler(
    'pgsql_session_open',
    'pgsql_session_close',
    'pgsql_session_read',
    'pgsql_session_write',
    'pgsql_session_destroy',
    'pgsql_session_gc'
);
?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -