ホームページ  >  記事  >  バックエンド開発  >  PHP3でSESSION関数を実装する(1)_PHPチュートリアル

PHP3でSESSION関数を実装する(1)_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 16:02:00855ブラウズ

SESSION関数数库:session.inc.php3

if (!isset($__session_inc__)){
$__session_inc__=1;
//require("cookie.inc.php3");
# ------------------------------------------------ -------------------
# セッション管理 v1.0 21.6.1998
# (c) Wild Karl Heinz   
#
# This Include handle セッションベースの変数処理
#
# ご自由にお使いください。もっと機能的にしていただければ、コピーを送っていただけると嬉しいです。  
#
# Mysql_connect を忘れないでください。  
#
# データベース構造
# テーブル「session」のテーブル構造
#
# CREATE TABLE session (
# id int(11) DEFAULT '0' NOT NULL auto_increment,
# sid varchar(20) DEFAULT '' NOT NULL,
# val blob,
# 回 timestamp(14),
# 主キー (id),
# キー sid (sid),
# UNIQUE sid_2 (sid)
# );  
#
# ここでは、データベースから古いセッションを削除する cron ジョブが欠落しています
# ----------------------------- --------------------------------------

// 请注意上面被注释掉的CREATE TABLE 句、
// この句は、使用するデータベース上で実行する必要があります。
// 表名はセッションでなくてもよく、次の $sess_table を設定する必要があります。

// この場所には設定が必要です
// 一般的な提案ではなく、session を表名として使用します
$sess_db = 'dbname';  
$sess_table = 'セッション';  

# ----------------------------------------------- -----
# Session_CheckID - 检查、設置并はセッション ID を返します
# パラメータ....: cookie 保存時間 (以分钟计)
# 設置表示もできません Cookie は当セッション中にのみ存在します
#これは、ASP 内の 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 );  
}
上は元のコードなので、さらに優れた関数が使用されています。
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 テーブルからデータを取得し、セッション配列に変換します
# パラメーター...: なし
# 戻り値.. ....: データを読み込んだ場合は true を返し、それ以外の場合は false を返します
#注意...: str2arr() 関数を使用します
# ------------- ---- -------------------------------------------
関数 session_read( )
{
# セッション変数を保持するハッシュ配列
global $session;

$sel = "$sess_table where sid = '$sess_sid'" ; res = mysql_db_query( $sess_db, $sel );
if( mysql_numrows( $res ) ) {
$val = mysql_result( $res, 0, "val" );
mysql_free_result( $res ); ;
return( true );
else {
$sess_error = mysql_error();
}
# -------------- --- -------------------------------------
# Split_Array() - セッション配列を文字列に変換します
# パラメータ...: 配列
# 戻り値...: 配列を変換した文字列
#
# Rasmus に感謝 (この人は PHP の発明者らしい)
# 注: セッション配列を文字列に変換する
# たとえば、 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 : "" ) );
}
$ts .= "セッション"; ]" : "";
$ts .= $b ? "[$b]" : "";
$ts .= $c ? "[$c]" : "";
$ts .= "[$ key] =$val&";
}
}
return( $ts );
}

# ------------------------- ----- -----------------------
# session_write - セッション配列を文字列に変換し、セッション テーブルに保存します
# パラメーター.: なし
# 戻り値 ...: 入金が正常であれば true を返し、それ以外の場合は false を返します
# ------------------------ -------- -------
function session_write()
{
# セッション変数を保持するためのハッシュ配列
global $session

; $sess_sid, $sess_db, $sess_table;
global $sess_error;

# セッション Cookie を削除したい場合は、セッション
# 配列を書き込む前に確認する必要があります

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

$ts = Split_Array( $session );
if( $ts > "" ) { $ts = substr( $ts, 0, strlen( $ts ) - 1 ); mysql_db_query( $sess_db, "sid = '$sess_s' のセッションから * を選択");
if( mysql_numrows( $res ) == 0 ) {
$sel = "$sess_table に挿入 ( id, sid, val, 回) ) ";
$sel .= "values( 0, '$sess_sid', '$ts', NULL )";
}
else {
$sel = "$sess_table セット val = '$ts', "; を更新します。
$sel .= "times = NULL where sid = '$sess_sid'";
if( !mysql_db_query( $sess_db, $sel ) ) {
$sess_error = mysql_error( false );
else { return( true ) }
}

#-------------------------------------------------------------
# session_del - 現在のセッションをすべてクリアします
# およびセッション テーブル内の現在のセッションに関連するレコードを削除します
# パラメーター....: ランダムなセッション ID
# 戻り値...: なし
# ----- -- --------------------------------------
関数 session_del()
{
グローバル $ セッション, $sess_db, $sess_table, $sess_sid;

$sel = "sid = '$sess_sid' の $sess_table から削除します";
}
$sess_sid = ''
}
?>

原作者: 不明




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

www.bkjia.com本当http://www.bkjia.com/PHPjc/316688.html技術記事 SESSION 関数ライブラリ: session.inc.php3 ?php if (!isset($__session_inc__)){ $__session_inc__=1; # ------------ -------------------------------------------------- -...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。