在PHP3中实现SESSION的功能(一)
在PHP3中实现SESSION的功能(一),在PHP3中实现SESSION的功能(一)
<?php
if (!isset($__session_inc__)){
$__session_inc__=1;
//require("cookie.inc.php3");
# -------------------------------------------------------------------
# Session Management v1.0 21.6.1998
# (c) Wild Karl Heinz <kh.wild@wicom.at
#
# This Include handle Session based variable handling
#
# Please feel free and use it. If you make it more functional
# it would be nice to send me a copy.
#
# Don’t forget - Mysql_connect !
#
# The database structure
# Table structure for table ’session’
#
# CREATE TABLE session (
# id int(11) DEFAULT ’0’ NOT NULL auto_increment,
# sid varchar(20) DEFAULT ’’ NOT NULL,
# val blob,
# times timestamp(14),
# PRIMARY KEY (id),
# KEY sid (sid),
# UNIQUE sid_2 (sid)
# );
#
# You’ll miss here a cron job to delete the old sessions from db
# -------------------------------------------------------------------
// 请注意上面被注释掉的CREATE TABLE语句,
// 你需要在你所使用的数据库上执行这条语句,
// 表名也可以不是session,那么就需要设置下面的$sess_table变量了。
// 此处你需要设置库名,和表名。
// 不过一般建议就使用session作为表名
$sess_db = ’dbname’;
$sess_table = ’session’;
# ----------------------------------------------------
# Session_CheckID - 检查、设置并返回 Session-ID
# 参数......: cookie保存时间(以分钟计)
# 也可不设置表示这个 cookie 只在当前session 有效
# 这其实就象ASP中SESSION的时效一样。
# 返回值....: 一个唯一的Session-ID (作为cookie存储)
# ----------------------------------------------------
function Session_CheckID( $min )
{
global $sess_sid;
if( !$sess_sid ) {
$sess_sid = uniqid( SC ); //取得一个唯一的随机数
/*
if( $min 0 ) {
SetCookie("sess_sid", $sess_sid, time()+($min*60), "/", "", 0 );
}
else {
SetCookie("sess_sid", $sess_sid, "", "/", "", 0 );
}
上面是原先的代码,会出错。所以另外用了一个更好的函数。
函数库:cookie.inc.php3
*/
jssetcookie("sess_sid",$sess_sid,$min);
return( false );
}
else {
return( true );
}
}
# ----------------------------------------------------------
# str2arr - 将字符串转换成session数组
# 参数.....: string
# 返回值...: 全局数组(其实就是session)
#本函数用途:将字符串转换成session数组
#如"session[username]=yourid&session[userpass]=12345"
#将会被转换成下面的数组
# session[username]="yourid"
# session[userpass]="12345"
#请注意函数split(),each(),list(),eval()的用法。
# ----------------------------------------------------------
function str2arr( $ts )
{
global $session;
$vals = split( "&", $ts );
while( list($key,$val) = each($vals) ) {
list( $name, $wert ) = split( "=", $val );
if( $val ) eval( "$$name = "$wert";" );
}
}
# ----------------------------------------------------------
# session_read() - 从SESSION表中取数据,转换成session数组
# 参数........: 无
# 返回值......: 如果读出数据,返回 true ,否则返回 false
#注意.........: 用到了str2arr()这个函数
# --------------------------------------------