PHP3でSESSION関数を実装する(1)

WBOY
リリース: 2016-07-29 08:34:34
オリジナル
688 人が閲覧しました

SESSION関数数库:session.inc.php3
if (!isset($__session_inc__)){
$__sessi
//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 - 检查、設置并返しSession-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数组
#如"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;
global $sess_sid, $sess_db, $sess_table, $sess_error;
$sel = "sid = '$sess_sid' から val を選択します"; $sess_db, $sel );
if( mysql_numrows( $res ) ) {
$val = mysql_result( $res, 0, "val" );
mysql_free_result( $res ); true );
else {
return( false );
}
}
# ------------------ ---- --------------------------------
# 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 .= $a "[$a]" ; $ts .= $b ? : "";
$ts .= $c ? "[$c]" : "";
}
}
return( $ts )
}
# ---------------------------------- - -----------------
# session_write - セッション配列を文字列に変換し、セッション テーブルに保存します
# パラメータ: なし
# 戻り値...: Ifデポジットが正常な場合は true を返し、そうでない場合は false を返します
# ------------------------------------- -------- ------------
function session_write()
{
# セッション変数を保持するためのハッシュ配列
global $session;
global $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 ); }
$res = mysql_db_query( $sess_db, "セッションから * を選択where sid = '$sess_s'" );
if( mysql_numrows( $res ) == 0 ) {
$sel = "$sess_table に挿入 ( id, sid, val,times ) ";
$sel .= "値( 0, '$sess_sid', '$ts', NULL )";
}
else {
$sel = "$sess_table set val = '$ts', ";
$sel .= "times = NULL を更新しますsid = '$sess_sid'";
}
if( !mysql_db_query( $sess_db, $sel ) ) {
$sess_error = mysql_error();
return( false );
}
else { return( true ); }
}
#-----------------------------------------------
# session_del - 現在のセッションをすべてクリアし
# 、セッション テーブル内の現在のセッションに関連するレコードを削除します
# パラメーター....: ランダムなセッション ID
# 戻り値...: なし
# ------ -- -------------------------
関数 session_del()
{
グローバル $session , $ sess_db, $sess_table, $sess_sid;
$sel = "sid = '$sess_sid' の $sess_table から削除"; mysql_db_query( $sess_db, $sel ) ) {
$sess_error = mysql_error();
$sess_sid = '';
}
}
原作者: 不明

以上、PHP3でSESSIONを実装する機能(1)を内容も含めて紹介しましたが、PHPチュートリアルに興味のある方の参考になれば幸いです。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!