您好,欢迎访问一九零五行业门户网

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

session函数库:session.inc.php3
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的功能(一),包括了方面的内容,希望对php教程有兴趣的朋友有所帮助。
其它类似信息

推荐信息