セッション|関数
セッションに関するいくつかの補足関数
PHP では、セッションについて多くの議論が行われています。
以下でご紹介させて頂きます。
session_set_save_handler() は本当に良いものです。
//********************
session_unset (PHP4 >= 4.0b4)
void session_unset(void); この関数はもちろん登録できますすべてのセッション変数は空に設定されます。これは登録解除ではなく、破棄と同じではないことに注意してください。
次の例は、この関数を非常によく説明しています。
session_register("a","b","c"); //自動セッション開始
$b=2; ("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、string) を定義できます終了、書き込みなど)。
たとえば、この関数はセッションをローカルデータベースに保存したい場合に非常に便利です。
! !注: この関数を使用する前に、まず 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"
return(@unlink($sess_file));}