为php3增加session的功能
时间:2007-02-17 来源:PHP爱好者
php3中没有session的功能,以下是一个php4的backport,能为php3提供session
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
的管理。资料来源:http://www.phpwizard.net/phpChat。既然斑竹赞成直接
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
贴源码,我就把它贴出来吧。:-)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
file: sessions.php3
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
-----------------------------------------------------
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
<?
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
/*********************************************************************
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
********
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* Web Application Development with PHP
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* by
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* Tobias Ratschiller and Till Gerken
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* Copyright (c) 2000, New Riders Publishing
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*********************************************************************
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
********
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* $Title: PHP 3 implementation of PHP 4's session management API $
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* $Chapter: Web Application Concepts $
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* $Executable: false $
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* $Description:
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* This is a backport of the PHP 4 session_* functions to native PHP -
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
so *
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* that you can use the same session management functions under both
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* versions of PHP. They're believed to be about 75% compatible at the
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* moment, but it's already possible to use the most common stuff. $
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*********************************************************************
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
********/
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
/*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* Differences from PHP 4:
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* - no URL rewriting (of course)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* - options aren't specified in the php.ini but in the session c
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
lass below
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* - auto_start doesn't work with user callbacks
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* - the session ID is produced by a different algorithm
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* - shared memory support is still missing
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* - <?=SID?> doesn't work - use <?print($SID);?>
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* - the WDDX serializer doesn't work yet.
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* - serializing objects is limited due to PHP 3's serializer()
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* Notes:
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* The session class contains the configuration variables. Th
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
is is the
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* only part of the code you should need to edit.
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* To reproduce the module concept used in PHP 4's session li
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
brary, we
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* use classes. An example class has been been provided: file
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
s. You can
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* easily create your own classes, for example a class mysql
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
to store
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* session data to MySQL. It needs to provide the following f
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
unctions:
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* bool open(string save_path, string sess_name):
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* used on startup of a session to initialize variables o
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
r memory
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* returns false on error or true on success
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* bool close:
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* used on shutdown of a session to unset variables or fr
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
ee memory
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* mixed read(string sess_id):
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* reads the session data of the session identified with
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
sess_id.
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* returns false on error or the serialized session data
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* bool write(string sess_id, string val):
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* saves the session data of the session identified with
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
sess_id
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* returns false on error or true on success
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* bool destroy(string sess_id):
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* destroy the session identified with sess_id
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* returns false on error or true on success
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* bool gc(int max_lifetime):
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* provides garbage collection to remove sessions older t
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
han
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* time() - max_lifetime
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* returns false on error or true on success
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* While it may be faster to provide your own class, the reco
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
mmended way
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* to add storage modules is to use session_set_save_handler(
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
), as this
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* is compatible to PHP 4.
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*/
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$SID = "";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
class session
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Public variables
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $auto_start = true;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $save_path = "/tmp";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $name = "PHPSESSID";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $save_handler = "files";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $lifetime = 0;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $gc_probability = 1;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $gc_maxlifetime = 0;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $serialize_handler = "php";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $extern_referer_check = false;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $use_cookies = true;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $ID;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Private variables
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $nr_open_sessions = 0;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $mod_name = "";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $id;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $delimiter = "n";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $delimiter_value = "[==]";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function session()
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$this->mod_name = $this->save_handler;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
class user
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $open_func;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $close_func;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $read_func;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $write_func;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $destroy_func;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $gc_func;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function open($save_path, $sess_name)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$func = $this->open_func;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if(function_exists($func))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return($func($save_path, $sess_name));
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(true);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function close($save_path, $sess_name)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$func = $this->close_func;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if(function_exists($func))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return($func());
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(true);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function read($sess_id)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$func = $this->read_func;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return($func($sess_id));
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function write($sess_id, $val)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$func = $this->write_func;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return($func($sess_id, $val));
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function destroy($sess_id)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$func = $this->destroy_func;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if(function_exists($func))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return($func($sess_id));
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(true);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function gc($max_lifteime)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$func = $this->gc_func;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if(function_exists($func))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return($func($max_lifetime));
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(true);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
class files
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function open($save_path, $sess_name)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(true);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function close()
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(true);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function read($sess_id)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Open, read in, close file with session data
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$file = $session->save_path."/sess$sess_id";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if (!file_exists($file))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Create it
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
touch($file);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$fp = fopen($file, "r") or die("Could not open session file ($
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
file).");
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$val = fread($fp, filesize($file));
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
fclose($fp);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return($val);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function write($sess_id, $val)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Open, write to, close file with session data
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$file = $session->save_path."/sess$sess_id";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$fp = fopen($file, "w") or die("Could not write session file (
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$file)");
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$val = fputs($fp, $val);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
fclose($fp);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(true);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function destroy($sess_id)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$file = $session->save_path."/sess$sess_id";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
unlink($file);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(true);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function gc($max_lifetime)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// We return true, since all cleanup should be handled by
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// an external entity (i.e. find -ctime x | xargs rm)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(true);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function _session_create_id()
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(md5(uniqid(microtime())));
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function _php_encode()
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$ret = "";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Create a string containing the serialized variables
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
for ($i=0; $i<count($session->vars); $i++)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$ret .= $session->vars[$i].$session->delimiter_value.serialize
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
($GLOBALS[$session->vars[$i]]).$session->delimiter;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return($ret);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function _php_decode($data)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$data = trim($data);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$vars = explode($session->delimiter, $data);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Add the variables to the global namespace
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
for ($i=0; $i<count($vars); $i++)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$tmp = explode($session->delimiter_value, $vars[$i]);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$name = trim($tmp[0]);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$value = trim($tmp[1]);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$GLOBALS[$name] = unserialize($value);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function _wddx_encode($data)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$ret = wddx_serialize_vars($session->vars);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return($ret);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function _wddx_decode($data)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(wddx_deserialize($data));
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function session_name($name = "")
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if(empty($name))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return($session->name);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$session->name = $name;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function session_set_save_handler($open, $close, $read, $write, $destr
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
oy, $gc)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session, $user;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$user = new user;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$user->open_func = $open;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$user->close_func = $close;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$user->read_func = $read;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$user->write_func = $write;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$user->destroy_func = $destroy;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$user->gc_func = $gc;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$session->mod_name = "user";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function session_module_name($name = "")
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if(empty($name))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return($session->mod_name);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$session->mod_name = $name;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function session_save_path($path = "")
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if(empty($path))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return($session->save_path);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$session->save_path = $path;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function session_id($id = "")
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if(empty($id))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return($session->id);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$session->id = $id;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function session_register($var)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if ($session->nr_open_sessions == 0)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
session_start();
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$session->vars[] = trim($var);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function session_unregister($var)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
for ($i=0; $i<count($session->vars); $i++)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if ($session->vars[$i] == trim($var))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
unset($session->vars[$i]);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
break;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function session_is_registered($var)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
for ($i=0; $i<count($session->vars); $i++)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if ($session->vars[$i] == trim($var))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(true);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(false);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function session_encode()
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$serializer = "_".$session->serialize_handler."_encode";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$ret = $serializer();
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return($ret);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function session_decode($data)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$serializer = "_".$session->serialize_handler."_decode";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$ret = $serializer($data);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return($ret);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function session_start()
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session, $SID, $HTTP_COOKIE_VARS;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Define the global variable $SID?
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$define_sid = true;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Check if session_start() has been called once already
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if ($session->nr_open_sessions != 0)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(false);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Try to get the session ID
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if (empty($GLOBALS[$session->name]))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Maybe it is encoded into the URL (form <session-name>=<sess
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
ion-id>?
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
eregi($session->name."=([^/]+)", $GLOBALS["REQUEST_URI"], $reg
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
s);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$regs[1] = trim($regs[1]);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if (!empty($regs[1]))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$session->id = $regs[1];
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
else
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$session->id = $GLOBALS[$session->name];
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if (isset($HTTP_COOKIE_VARS[$session->name]))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$define_sid = false;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Check for external referer
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if ($session->extern_referer_check)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$url = parse_url($GLOBALS["HTTP_REFERER"]);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if(trim($url["host"]) != $GLOBALS["SERVER_NAME"])
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
unset($session->id);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$define_sid = true;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$mod = $GLOBALS[$session->mod_name];
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Do we have an existing session ID?
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if (!empty($session->id))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Start session
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if (!$mod->open($session->save_path, $session->name))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
die("Failed to initialize session module.");
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Read session data
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if ($val = $mod->read($session->id))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Decode session data
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
session_decode($val);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
else
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Create new session ID
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$session->id = _session_create_id();
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Store cookie with this session ID?
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if ($session>use_cookies)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
SetCookie($session->name, $session->id, $session->lifetime
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Check if we should clean up (call the garbage collection routin
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
es)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if ($session->gc_probability > 0)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
srand(time());
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$randmax = getrandmax();
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$nrand = (int)(100 * rand() / $randmax);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if($nrand <$session->gc_probability)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$mod->gc($session->gc_maxlifetime);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if($define_sid)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$SID = $session->name."=".$session->id;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$session->nr_open_sessions++;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(true);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function session_destroy()
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if($session->nr_open_sessions == 0)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(false);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Destroy session
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$mod = $GLOBALS[$session->mod_name];
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if (!$mod->destroy($session->name))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(false);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
unset($session);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$session = new session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(true);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function session_close()
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session, $SID;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if($session->nr_open_sessions == 0)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(false);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Encode session
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$val = session_encode();
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$len = strlen($val);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Save session
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$mod = $GLOBALS[$session->mod_name];
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if (!$mod->write($session->id, $val))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
die("Session could not be saved.");
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Close session
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if (function_exists($session->mod_name."->close") &&!$mod->close()
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
die("Session could not be closed.");
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$SID = "";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$session->nr_open_sessions--;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(true);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$session = new session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$mod = $session->save_handler;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$$mod = new $mod;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if ($session->auto_start)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$ret = session_start() or die("Session could not be started.");
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
register_shutdown_function("session_close");
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
/*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* Basic Example
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* This basic example shows the normal use. The code is the same
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
as in
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* PHP 4, except for the require("sessions.php3");
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
require("sessions.php3");
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
session_start();
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
print("Our session ID is: ".session_id()."<br>");
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
print("The counter value is: $counter<br>");
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
print("The foo value is: $foo<br>");
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$counter++;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$foo = "Foobar=Fobar";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
session_register("counter");
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
session_register("foo");
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*/
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
/*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* User Callback Example
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* This example uses callback functions. It's a slightly modified
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
version
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* of Sascha Schumann's original test script for the callbacks. 1
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
00%
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* the same code as in PHP 4 (except for the require(), of course
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
).
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
require("sessions.php3");
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function my_open($save_path, $sess_name)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
echo $save_path."<br>";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
echo $sess_name."<br>";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return true;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function my_read($sess_id)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
echo $sess_id."<br>";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return true;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function my_write($sess_id, $val)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
echo $val."<br>";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return true;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$foo = 10;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
session_set_save_handler("my_open", "", "my_read", "my_write", "", "")
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
session_start();
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
session_register("foo");
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
echo "foo: $foo";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*/
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
?>
php爱好者站 http://www.phpfans.net c/vc/c++/java.
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
的管理。资料来源:http://www.phpwizard.net/phpChat。既然斑竹赞成直接
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
贴源码,我就把它贴出来吧。:-)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
file: sessions.php3
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
-----------------------------------------------------
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
<?
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
/*********************************************************************
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
********
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* Web Application Development with PHP
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* by
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* Tobias Ratschiller and Till Gerken
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* Copyright (c) 2000, New Riders Publishing
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*********************************************************************
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
********
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* $Title: PHP 3 implementation of PHP 4's session management API $
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* $Chapter: Web Application Concepts $
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* $Executable: false $
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* $Description:
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* This is a backport of the PHP 4 session_* functions to native PHP -
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
so *
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* that you can use the same session management functions under both
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* versions of PHP. They're believed to be about 75% compatible at the
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* moment, but it's already possible to use the most common stuff. $
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*********************************************************************
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
********/
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
/*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* Differences from PHP 4:
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* - no URL rewriting (of course)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* - options aren't specified in the php.ini but in the session c
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
lass below
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* - auto_start doesn't work with user callbacks
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* - the session ID is produced by a different algorithm
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* - shared memory support is still missing
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* - <?=SID?> doesn't work - use <?print($SID);?>
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* - the WDDX serializer doesn't work yet.
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* - serializing objects is limited due to PHP 3's serializer()
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* Notes:
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* The session class contains the configuration variables. Th
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
is is the
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* only part of the code you should need to edit.
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* To reproduce the module concept used in PHP 4's session li
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
brary, we
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* use classes. An example class has been been provided: file
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
s. You can
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* easily create your own classes, for example a class mysql
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
to store
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* session data to MySQL. It needs to provide the following f
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
unctions:
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* bool open(string save_path, string sess_name):
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* used on startup of a session to initialize variables o
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
r memory
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* returns false on error or true on success
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* bool close:
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* used on shutdown of a session to unset variables or fr
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
ee memory
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* mixed read(string sess_id):
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* reads the session data of the session identified with
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
sess_id.
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* returns false on error or the serialized session data
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* bool write(string sess_id, string val):
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* saves the session data of the session identified with
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
sess_id
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* returns false on error or true on success
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* bool destroy(string sess_id):
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* destroy the session identified with sess_id
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* returns false on error or true on success
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* bool gc(int max_lifetime):
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* provides garbage collection to remove sessions older t
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
han
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* time() - max_lifetime
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* returns false on error or true on success
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* While it may be faster to provide your own class, the reco
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
mmended way
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* to add storage modules is to use session_set_save_handler(
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
), as this
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* is compatible to PHP 4.
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*/
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$SID = "";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
class session
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Public variables
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $auto_start = true;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $save_path = "/tmp";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $name = "PHPSESSID";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $save_handler = "files";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $lifetime = 0;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $gc_probability = 1;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $gc_maxlifetime = 0;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $serialize_handler = "php";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $extern_referer_check = false;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $use_cookies = true;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $ID;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Private variables
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $nr_open_sessions = 0;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $mod_name = "";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $id;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $delimiter = "n";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $delimiter_value = "[==]";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function session()
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$this->mod_name = $this->save_handler;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
class user
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $open_func;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $close_func;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $read_func;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $write_func;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $destroy_func;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
var $gc_func;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function open($save_path, $sess_name)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$func = $this->open_func;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if(function_exists($func))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return($func($save_path, $sess_name));
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(true);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function close($save_path, $sess_name)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$func = $this->close_func;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if(function_exists($func))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return($func());
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(true);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function read($sess_id)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$func = $this->read_func;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return($func($sess_id));
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function write($sess_id, $val)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$func = $this->write_func;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return($func($sess_id, $val));
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function destroy($sess_id)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$func = $this->destroy_func;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if(function_exists($func))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return($func($sess_id));
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(true);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function gc($max_lifteime)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$func = $this->gc_func;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if(function_exists($func))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return($func($max_lifetime));
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(true);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
class files
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function open($save_path, $sess_name)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(true);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function close()
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(true);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function read($sess_id)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Open, read in, close file with session data
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$file = $session->save_path."/sess$sess_id";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if (!file_exists($file))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Create it
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
touch($file);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$fp = fopen($file, "r") or die("Could not open session file ($
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
file).");
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$val = fread($fp, filesize($file));
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
fclose($fp);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return($val);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function write($sess_id, $val)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Open, write to, close file with session data
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$file = $session->save_path."/sess$sess_id";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$fp = fopen($file, "w") or die("Could not write session file (
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$file)");
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$val = fputs($fp, $val);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
fclose($fp);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(true);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function destroy($sess_id)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$file = $session->save_path."/sess$sess_id";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
unlink($file);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(true);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function gc($max_lifetime)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// We return true, since all cleanup should be handled by
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// an external entity (i.e. find -ctime x | xargs rm)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(true);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function _session_create_id()
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(md5(uniqid(microtime())));
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function _php_encode()
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$ret = "";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Create a string containing the serialized variables
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
for ($i=0; $i<count($session->vars); $i++)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$ret .= $session->vars[$i].$session->delimiter_value.serialize
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
($GLOBALS[$session->vars[$i]]).$session->delimiter;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return($ret);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function _php_decode($data)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$data = trim($data);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$vars = explode($session->delimiter, $data);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Add the variables to the global namespace
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
for ($i=0; $i<count($vars); $i++)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$tmp = explode($session->delimiter_value, $vars[$i]);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$name = trim($tmp[0]);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$value = trim($tmp[1]);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$GLOBALS[$name] = unserialize($value);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function _wddx_encode($data)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$ret = wddx_serialize_vars($session->vars);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return($ret);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function _wddx_decode($data)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(wddx_deserialize($data));
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function session_name($name = "")
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if(empty($name))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return($session->name);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$session->name = $name;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function session_set_save_handler($open, $close, $read, $write, $destr
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
oy, $gc)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session, $user;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$user = new user;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$user->open_func = $open;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$user->close_func = $close;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$user->read_func = $read;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$user->write_func = $write;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$user->destroy_func = $destroy;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$user->gc_func = $gc;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$session->mod_name = "user";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function session_module_name($name = "")
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if(empty($name))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return($session->mod_name);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$session->mod_name = $name;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function session_save_path($path = "")
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if(empty($path))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return($session->save_path);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$session->save_path = $path;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function session_id($id = "")
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if(empty($id))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return($session->id);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$session->id = $id;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function session_register($var)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if ($session->nr_open_sessions == 0)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
session_start();
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$session->vars[] = trim($var);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function session_unregister($var)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
for ($i=0; $i<count($session->vars); $i++)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if ($session->vars[$i] == trim($var))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
unset($session->vars[$i]);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
break;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function session_is_registered($var)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
for ($i=0; $i<count($session->vars); $i++)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if ($session->vars[$i] == trim($var))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(true);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(false);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function session_encode()
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$serializer = "_".$session->serialize_handler."_encode";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$ret = $serializer();
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return($ret);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function session_decode($data)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$serializer = "_".$session->serialize_handler."_decode";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$ret = $serializer($data);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return($ret);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function session_start()
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session, $SID, $HTTP_COOKIE_VARS;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Define the global variable $SID?
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$define_sid = true;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Check if session_start() has been called once already
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if ($session->nr_open_sessions != 0)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(false);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Try to get the session ID
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if (empty($GLOBALS[$session->name]))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Maybe it is encoded into the URL (form <session-name>=<sess
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
ion-id>?
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
eregi($session->name."=([^/]+)", $GLOBALS["REQUEST_URI"], $reg
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
s);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$regs[1] = trim($regs[1]);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if (!empty($regs[1]))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$session->id = $regs[1];
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
else
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$session->id = $GLOBALS[$session->name];
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if (isset($HTTP_COOKIE_VARS[$session->name]))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$define_sid = false;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Check for external referer
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if ($session->extern_referer_check)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$url = parse_url($GLOBALS["HTTP_REFERER"]);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if(trim($url["host"]) != $GLOBALS["SERVER_NAME"])
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
unset($session->id);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$define_sid = true;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$mod = $GLOBALS[$session->mod_name];
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Do we have an existing session ID?
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if (!empty($session->id))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Start session
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if (!$mod->open($session->save_path, $session->name))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
die("Failed to initialize session module.");
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Read session data
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if ($val = $mod->read($session->id))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Decode session data
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
session_decode($val);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
else
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Create new session ID
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$session->id = _session_create_id();
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Store cookie with this session ID?
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if ($session>use_cookies)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
SetCookie($session->name, $session->id, $session->lifetime
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Check if we should clean up (call the garbage collection routin
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
es)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if ($session->gc_probability > 0)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
srand(time());
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$randmax = getrandmax();
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$nrand = (int)(100 * rand() / $randmax);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if($nrand <$session->gc_probability)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$mod->gc($session->gc_maxlifetime);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if($define_sid)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$SID = $session->name."=".$session->id;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$session->nr_open_sessions++;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(true);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function session_destroy()
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if($session->nr_open_sessions == 0)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(false);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Destroy session
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$mod = $GLOBALS[$session->mod_name];
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if (!$mod->destroy($session->name))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(false);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
unset($session);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$session = new session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(true);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function session_close()
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
global $session, $SID;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if($session->nr_open_sessions == 0)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(false);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Encode session
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$val = session_encode();
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$len = strlen($val);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Save session
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$mod = $GLOBALS[$session->mod_name];
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if (!$mod->write($session->id, $val))
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
die("Session could not be saved.");
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
// Close session
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if (function_exists($session->mod_name."->close") &&!$mod->close()
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
die("Session could not be closed.");
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$SID = "";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$session->nr_open_sessions--;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return(true);
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$session = new session;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$mod = $session->save_handler;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$$mod = new $mod;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
if ($session->auto_start)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$ret = session_start() or die("Session could not be started.");
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
register_shutdown_function("session_close");
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
/*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* Basic Example
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* This basic example shows the normal use. The code is the same
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
as in
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* PHP 4, except for the require("sessions.php3");
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
require("sessions.php3");
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
session_start();
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
print("Our session ID is: ".session_id()."<br>");
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
print("The counter value is: $counter<br>");
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
print("The foo value is: $foo<br>");
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$counter++;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$foo = "Foobar=Fobar";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
session_register("counter");
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
session_register("foo");
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*/
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
/*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* User Callback Example
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* This example uses callback functions. It's a slightly modified
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
version
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* of Sascha Schumann's original test script for the callbacks. 1
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
00%
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
* the same code as in PHP 4 (except for the require(), of course
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
).
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
require("sessions.php3");
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function my_open($save_path, $sess_name)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
echo $save_path."<br>";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
echo $sess_name."<br>";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return true;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function my_read($sess_id)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
echo $sess_id."<br>";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return true;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
function my_write($sess_id, $val)
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
{
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
echo $val."<br>";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
return true;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
}
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
$foo = 10;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
session_set_save_handler("my_open", "", "my_read", "my_write", "", "")
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
;
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
session_start();
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
session_register("foo");
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
echo "foo: $foo";
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
*/
www.chinaitp ower .comYOI1OmhX7BvcrIs8LziDVRbxR
?>
php爱好者站 http://www.phpfans.net c/vc/c++/java.
相关阅读 更多 +