セッション|関数
PHP では、セッションについて多くの議論が行われています。実際、PHP4 には、通常は気付かない機能がいくつかあります。
以下でご紹介させて頂きます。
session_set_save_handler() は本当に良いものです。
//********************
session_unset (PHP4 >= 4.0b4)
void session_unset(void);
この関数は登録されているすべてのセッション変数を設定できますもちろん空です。これは登録解除ではなく、破棄と同じではないことに注意してください。
次の例は、この関数を非常によく説明しています。
session_register(''a'',''b'',''c''); //自動セッション開始
$a=1; c=3;
session_unregister(''a''); // $a を登録解除します
echo "A: $a - reg:".session_is_registered(''a'')."
"; a は残ります
session_unset(); // $b と $c の設定を解除します
echo "B:$b - reg:".session_is_registered(''b'')."
" // 登録は残ります
echo "C :$c - reg:".session_is_registered(''c'')."
";
echo session_encode();
?>
出力:
A: 1 - reg:
B: - reg:1
C: - reg:1
!b|!c
//********************************
session_get_cookie_params (PHP4 >= 4.0RC2)
array session_get_cookie_params (void);
現在のセッションの Cookie に関する情報を記録する配列を返します。
次があります:
「ライフタイム」 - クッキーの存続期間。
「パス」 - Cookie が保存されるパス。
「ドメイン」 - Cookie のドメイン。
//******************************
session_set_cookie_params (PHP4 >= 4.0b4)
void session_set_cookie_params ( intライフタイム [, 文字列パス [, 文字列ドメイン]])
php.ini の設定と同様に、セッション Cookie のいくつかのパラメーターを設定しますが、この関数によって行われた設定は現在のスクリプト ファイルに対してのみ有効です。
//**********************************
これから紹介する機能は誰にとってもとても役立つはずです便利です。Cookie なしで保存されるセッションをカスタマイズすることに興味がありますか?あなたのアイデアを実現できる機能です。
考えてみましょう、Cookie を使用しないことのメリットは何でしょうか?少なくともクライアントのCookie機能がオンになっているかどうかを気にする必要はありませんね。
session_set_save_handler (PHP4 >= 4.0b4)
void session_set_save_handler (string open、string close、string read、string write、string destroy、string gc)
この関数は、ユーザーレベルのセッション保存関数 (open 、閉じる、書くなど)。
たとえば、この関数はセッションをローカルデータベースに保存したい場合に非常に便利です。
! ! !注: この関数を使用する前に、まず php.ini ファイル session.save_hadler=user を設定する必要があります。そうしないと、session_set_save_handler() が有効になりません。
さらに、私のテストによると、そのようなセッションをページ間で使用したい場合は、セッションを使用する各スクリプトファイルに独自のカスタム関数と session_set_save_handler を追加する必要があります。したがって、最良の方法は、A を別のものにすることです。インクルードされるファイルは、セッションを使用するすべてのスクリプトにインクルードされます。
次の例は、デフォルトのファイル方法と同様の、最も基本的なセッション保存方法を示しています。
これを達成するためにデータベースを使用したい場合、これも非常に簡単に実行できます。
例 1. session_set_save_handler() の例
function open ($save_path, $session_name) {
global $sess_save_path, $sess_session_name
$sess_save_path = $save_path; _セッション名 = $セッション名;
return(true);
function close() {
return(true);
function read ($id) {
global $sess_save_path, $sess_session_name = "$sess_save_path/sess_ $id";
if ($fp = @fopen($sess_file, "r")) {
$sess_data = fread($fp, filesize($sess_file));
return($sess_data);
} else {
return("");
}
}
関数書き込み ($id, $sess_data) {
グローバル $sess_save_path, $sess_session_name
$sess_file = "$sess_save_path/sess_$id"; = @fopen($sess_file, "w")) {
return(fwrite($fp, $sess_data))
} else {
return(false)
}
}
function destroy ($id);
グローバル $sess_save_path, $sess_session_name;
$sess_file = "$sess_save_path/sess_$id"
}
/************ **********************************
* 警告 - いくつかの *
* 種類のガベージ コレクションを実装する必要があります。 *
******************************************** ****/
function gc ($maxlifetime) {
return true
}
session_set_save_handler ("open", "close", "read", "write", "destroy", "gc");
session_start();
//通常どおりセッションの使用を続行します
//これで、次のようになりますいつものようにセッション。
?>
//************************************* ***
session_cache_limiter (PHP4 CVS のみ)
string session_cache_limiter ([string queue_limiter])
この関数は、session.cache_limiter の値を設定または取得できます。
php.iniでも同様の設定が可能です。その値は nocache、public、private です。
この関数は、HTTP ヘッダーを通じてクライアントに送信されます。 nocache の場合、クライアント キャッシュはすべて無効になります。パブリックではキャッシュが許可されますが、プライベートはパブリックよりも安全です。
デフォルト値はphp.iniの設定です。これを使用したい場合は、session_start()を呼び出す前にこの関数を呼び出す必要があります。
この関数は現在 CVS モードでのみ動作しますが、PHP4.0.3 ではサポートされる予定です。
例 1. session_cache_limiter() の例
# キャッシュ リミッターを ''private'' に設定します
session_cache_limiter(''private);
$cache_limiter = session_cache_limiter();キャッシュ リミッターは $cache_limiter
";
?>
//**************************** に設定されました。 ** *