首页 >> 读书频道 >> 电脑 >> 在PHP3中实现SESSION的功能(一)
 
· 在PHP3中实现SESS
· 在PHP3中实现SESS
· 我用php+mysql写
· 一个简洁的多级别论坛
· 投票管理程序
· 一个简单实现多条件查询的
· 基于mysql的论坛(1
· 基于mysql的论坛(2
· 基于mysql的论坛(3
· 基于mysql的论坛(4
· 基于mysql的论坛(5
· 基于mysql的论坛(6
 
· 美容养颜手册
· 加油金顺剧情分集介绍完整
· 红楼梦:120回全本[清
· 素质教育在美国
· 全唐诗卷四十六
· 韩剧《布拉格恋人》剧情介
· 夜航船[作者:明·张岱]
· 局外人[作者:韩·可爱淘
· 现场流行病学
· 源氏物语[日本:紫式部]
· 武林寓言故事
· 2006高考录取规则
 
· (出租)中动商场部分及写
· (出租)中动动漫基地&#
· 喜剧学院
· 《善德女王》剧情介绍
· 魔女18号 剧情
· 丑女无敌剧情介绍
· 魔女幼熙剧情介绍
· 龙游天下剧情介绍
· 震撼世界的七日剧情介绍
· 静静的白桦林剧情介绍
· 心情日记—老公今天我想对
· 旗舰剧情介绍
欢迎来到月影社区!如果您觉得这里不错,请推荐给您的朋友们。月影社区:http://wf66.com/

在PHP3中实现SESSION的功能(一)


查看有无更新版本

关键字:PHP 2006-9-4

 

SESSION函数库:session.inc.php3
<?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()这个函数
# ---------------------------------------------------------- 
function session_read() 

# Hash array to keep session-variables 
global $session; 
global $sess_sid, $sess_db, $sess_table, $sess_error; 
$sel = "Select val from $sess_table where sid = ’$sess_sid’"; 
$res = mysql_db_query( $sess_db, $sel ); 
if( mysql_numrows( $res ) ) { 
$val = mysql_result( $res, 0, "val" ); 
str2arr( $val ); 
mysql_free_result( $res ); 
return( true ); 

else { 
return( false ); 
$sess_error = mysql_error(); 


# ------------------------------------------------------ 
# Split_Array() - 将session数组转换成字符串
# 参数.......: 数组
# 返回值.....: 数组转换得来的字符串 

# Thanks to Rasmus (这人好象是PHP的发明人)
# 注意:将session数组转换成字符串
#如session[username]="yourid"
# session[userpass]="12345"
#将会被转换成"session[username]=yourid&session[userpass]=12345"
#同时该函数考虑到了数组的某个元素也是数据的情况
#这个函数被设计成一个递归函数
# ------------------------------------------------------ 
function Split_Array( $arr, $a = "", $b = "", $c = "" ) 

while( list( $key, $val ) = each( $arr ) ) { 
if( is_array( $val ) ) { 
$ts .= Split_Array( $arr[ $key ], 
( strlen( $a ) ? $a : $key ), 
( strlen( $b ) ? $b : ( strlen( $a ) ? $key : "" ) ), 
( strlen( $c ) ? $c : ( strlen( $b ) ? $key : "" ) ) ); 

else { 
$ts .= "session"; 
$ts .= $a ? "[$a]" : ""; 
$ts .= $b ? "[$b]" : ""; 
$ts .= $c ? "[$c]" : ""; 
$ts .= "[$key]=$val&"; 


return( $ts ); 

# --------------------------------------------------- 
# session_write - 将session数组转换成字符串,再存到session表中 
# 参数.: 无
# 返回值...: 如果存入正常返回 true ,否则返回 false
# --------------------------------------------------- 
function session_write() 

# Hash array to keep session-variables 
global $session; 
global $sess_sid, $sess_db, $sess_table; 
global $sess_error; 
# if you like to delete a session-cookie 
# you must check it before writting the session 
# array 
if( !$sess_sid ) { session_checkid( 0 ); } 
$ts = Split_Array( $session ); 
if( $ts > "" ) { $ts = substr( $ts, 0, strlen( $ts ) - 1 ); } 
$res = mysql_db_query( $sess_db, "Select * from session where sid = ’$sess_s’"); 
if( mysql_numrows( $res ) == 0 ) { 
$sel = "Insert into $sess_table ( id, sid, val, times ) "; 
$sel .= "values( 0, ’$sess_sid’, ’$ts’, NULL )"; 

else { 
$sel = "Update $sess_table set val = ’$ts’, "; 
$sel .= "times = NULL where sid = ’$sess_sid’"; 

if( !mysql_db_query( $sess_db, $sel ) ) { 
$sess_error = mysql_error(); 
return( false ); 

else { return( true ); } 

# --------------------------------------------- 
# session_del - 清除当前所有的session
# 并删除session表中和当前session有关的记录 
# 参数.....: 一个随机的session id 
# 返回值...: 无
# --------------------------------------------- 
function session_del() 

global $session, $sess_db, $sess_table, $sess_sid; 
$sel = "Delete from $sess_table where sid = ’$sess_sid’"; 
if( !mysql_db_query( $sess_db, $sel ) ) { 
$sess_error = mysql_error();
}
$sess_sid = ’’;
}
}
?>  

在PHP3中实现SESSION的功能(一)

[ 1 ]
在PHP3中实现SESSION的功能(一) num

打印本页 关闭

关于我们版权声明本站导航友情连结作品演示 TOP↑