SESSION函數庫:session.inc.php3
以上就介紹了 在PHP3實現SESSION的功能(一),包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。
if (!isset($__session_inc__)){
$__sessi
//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,那就需要設定下面的$sess_table變數了。
// 這裡你需要設定庫名,和表名。
//不過一般建議就使用session作為表名
$sess_db = 'dbname';
$sess_table = '會話';
# ------------ ---------------------------------------------- ---- --
# Session_CheckID - 檢查、設定並回傳Session-ID
# 參數......: cookie保存時間(以分鐘計)
# 也可不設定表示此cookie只在目前會話有效
# 這其實就像ASP中SESSION的時效一樣。
# 傳回值....: 一個唯一的Session-ID (作為cookie儲存)
# ---- -------------------- ----------------------------
function Session_CheckID( $min )
{
全域$sess_sid;
if( !$sess_sid ) {
$sess_sid = uniqid( SC ); // 取得一個唯一的隨機數
/*
if( $min > 0 ) {
SetCid("sess_smin ", $sess_sid, time()+($min*60), "/ 」、「」、0);
}
else {
SetCookie("sess_sid", $sess_sid, "", "/", "", 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;
$sel = "Select val from $sess_table where sid = '$sess_sid'"; $sess_db, $sel );
if( mysql_numrows( $res ) ) {
$val = mysql_result( $res, 0, "val" );
str2arr( $value. ( $res );
return( true );
}
else {
return( false );
> 🎜 ># ------------------------------------------------ ------
# 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 .. $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 . 🎜>$ts = Split_Array( $session );
if( $ts > "" ) { $ts = substr( $ts, 0, strlen( $ts ) - 1 ); }
$res = mysql_$res = mysql_query ( $sess_db, "Select * from session where sid = '$sess_s'");
if( mysql_numrows( $res ) == 0 ) {
$sel = "Insert into $sess_table (to $sess_table, id, sss, val, times ) ";
$sel .= "values( 0, '$sess_sid', '$ts', NULL )";
}
else {$sel
sess_table set val = '$ts', ";
$sel .= "times = NULL where sid = '$sess_sid'";
}
if( !my_db_query(s)_db_ {
$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 = "eteete from $sess_sid;
$sel = "eteete from $s_tabled55; >if( !mysql_db_query( $sess_db, $sel ) ) {
$sess_error = mysql_error();
}
$sess_sid = '';
}
原作者:不詳