首頁 > 後端開發 > php教程 > 在PHP3中實作SESSION的功能(一)_PHP教程

在PHP3中實作SESSION的功能(一)_PHP教程

WBOY
發布: 2016-07-21 16:02:00
原創
933 人瀏覽過

SESSION函數庫:session.inc.php3

if (!isset($__session_inc__)){
$__session_inc__=1;
//require("cookie.inc .php3");
# ----------------------------------------- ----------------------------------------------------------------
# 會話管理v1.0 21.6.1998  
# (c) Wild Karl Heinz   
#  
#
# 請隨意使用它。如果你讓它更實用  
#,最好寄給我一份副本。  
#  
# 不要忘記 - Mysql_connect !
#  
# 資料庫結構  
# 表'session' 的表格結構  
#  
# CREATE TABLE session (  

# CREATE TABLE session (  

# CREATE TABLE session (  
, DE3, 10)
# sid varchar(20) DEFAULT '' NOT NULL,  
# val blob,  
# 次時間戳(14),  
# 主鍵(id), . --------------- ----------------------------------- ---------------------  

// 請注意上面被註解掉的CREATE TABLE 語句,
// 你需要在你所使用的資料庫上執行一條語句,
// 表名也可以不是session,那就需要設定下面的

//這裡需要設定庫名,和表名。
//一般建議就使用session作為表名
$sess_db = 'dbname';  
$sess_table = '會話';  

# ---------- -------------------------------------------- ------ ---  
# Session_CheckID - 檢查、設定並回傳Session-ID  
# 參數......: cookie儲存時間(以分鐘計)
# 也可不設定表示這個cookie只在當前會話有效
# 這其實就像ASP中SESSION的時效一樣。
# 傳回值....: 一個唯一的Session-ID (作為cookie儲存)
# - ----------------------- --------------------------- -  
函數Session_CheckID( $min )  
{
全域$sess_sid;  

if( !$sess_sid ) {  
$sess_sid = uniqid( SC ); // 取得一個唯一的隨機數
/*
if( $min > 0 ) { ("sess_sid", $sess_sid, time() ($min*60), "/" , "", 0);  
}  
else {  
SetCookie("sess_sid", $sess_s  ", "/", "", 0 );  
}  
上面是正常的程式碼,會出錯。所以另外用了一個更好的函數。
函式庫:cookie.inc.php3
*/
jssetcookie("sess_sid" ,$sess_sid,$min);
回傳(假);  
} 🎜>return( true );  
}  
}  

# ---------------------------- ------- -----------------------  
# str2arr - 將字串轉換成會話資料庫
# 參數.. ...: string
# 回傳值...: 全域資料庫(其實就是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;  
$res = mysql_db_query( $sess_db, $sel );  
if( mysql_numrows( $res ) ) {  
$val = mysql_result( $res ) ) {  
$val = mysql_result( $res ) 0, "valp" ); ( $val );  
mysql_free_result( $res );  
return( true );  
}  
else {  
return( false ); 🎜>}  
}  

# ------------------------------------ ------------------  
# Split_Array() - 將session陣列轉換成字串
# 參數.......: 陣列
# 回傳值.....: 陣列轉換得來的字串  
#  
# Thanks to Rasmus (這人好像是PHP的發明人)
# 注意:將session陣列轉換成字符字串
#如session[用戶名]="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 : "" ) ) );  
}  
) );  } 🎜>$ts .= "session";  
$ts .= $a ? "[$a]" : "";  
$ts .= $b ? "[$b]" : "";
$ts .= $c ? "[$c]" : "";  
$ts .= "[$key]=$val&";  
}  
}  
return(>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 ookiecookie o🠎 🎜># array  

if( !$sess_sid ) { session_checkid( 0 ); }  

$ts = Split_Array( $session ); $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( 0id' '$ts', NULL )";  
}  
else {  
$sel = "Update $sess_table set val = '$ts', ";  
$sel .= "times = '$ts', ";  
$sel .= "times = N sid = '$sess_sid'";  
}  
if( !mysql_db_query( $sess_db, $sel ) ) {  
$sess_error = my_error();
else { return( true ); }  
}

# ------------------------------------------- --  
# session_del - 清除目前所有的session
# 並刪除session表中和目前session相關的記錄  
# 參數.....: 一個隨機的session id  
# 回傳值...: 無
# ----------------------------------------- ----  
function session_del()  
{  
global $session, $sess_db, $sess_table, $sess_sid;  

from $. sess_sid'";  
if( !mysql_db_query( $sess_db, $sel ) ) {  
$sess_error = mysql_error();
}
$'']; }
?>   

原作者:不詳  



http://www.bkjia.com/PHPjc/316688.html

truehttp: //www.bkjia.com/PHPjc/316688.htmlTechArticleSESSION函式庫:session.inc.php3 ?php if (!isset($__session_inc__)){ $__session_inc__= 1; //require(cookie.inc.php3); # ------------------------------------ -----------------------...
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板