// page1.php
session_start();
echo'ページ #1 へようこそ'
/* セッション変数を作成し、セッション変数に値を代入します*/$_SESSION['favcolor'] = ' green ';
$_SESSION['animal'] = 'cat';
$_SESSION['time'] = time(); クライアントが Cookie を使用する場合、セッションは page2.php に直接渡されます。 echo'
ページ 2';
// クライアントが Cookie を無効にしている場合
echo'
page 2';
/*
デフォルトの php5.2.1 では、セッション
が書き込まれるときにのみ SID が値を持ちます。 Cookie がすでに存在する場合、SID は (未定義) になります*/
?>
// page2.php
print$_SESSION['animal']; / 単一のセッションを出力します
var_dump($_SESSION) // page1.php によって渡されたセッション値を出力します
;
2.3 セッション関数を使用してページのキャッシュを制御します。
多くの場合、Web ページがクライアントにキャッシュされているかどうかを判断したり、キャッシュの有効期間を設定したりする必要があります。たとえば、Web ページに機密性の高いコンテンツが含まれている場合などです。ローカルにキャッシュされている場合は、ログインせずに直接ローカル キャッシュを開いて Web ページを参照できます。
ページ クライアント キャッシュを制御するには、session_cache_limiter('private'); を使用します。 session_start() の前に呼び出されます。
その他のパラメータについては、http://blog.chinaunix.net/u/27731/showart.php?id=258087 を参照してください。
クライアント キャッシュ時間を制御するには、session_cache_expire(int) を使用します。 ; ユニット (s) も使用します。
これは、header() でコントロール ページのキャッシュを制御することもできます。
には 3 つのステップが必要です。
session_destroy(); // ステップ 1: サーバー側のセッション ファイルを削除します。 setcookie(session_name(),'', time()-3600); // ステップ 2:実際のセッションを削除します:
$_SESSION= array (); // ステップ 3: $_SESSION グローバル変数 array を削除します?> PHP 大規模 Web アプリケーションでのセッションの使用現時点では、デフォルトのセッション保存方法は適切ではありません。現時点では、関数 bool session_set_save_handler (callbackopen、callbackclose、callbackread、callbackwrite、callbackdestroy、callbackgc) を使用するのが最善の方法です。 ) は、この問題の解決策を提供します。
この関数で使用される 6 つの関数は次のとおりです:
1. bool open() はセッション保存メカニズムを開くために使用されます。
2. bool close() はセッションを閉じます。ストレージ操作
3. mixde read() ストレージからセッション データをロードするときにこの関数を使用します。 4. bool write () 指定されたセッション ID のすべてのデータをストレージに書き込みます。 5. bool destroy() 指定されたセッションに関連付けられたデータを破棄します。 ID 6. bool gc() ストレージ システム内のデータのガベージ コレクション 例については、PHP マニュアルの session_set_save_handler () 関数を参照してください。
クラスを使用して処理する場合は、session_set_save_handler(
array('className','open) を使用します。 ')、
array('className','close')、
array('className','read')、
array('className','write')、
array('className','destroy') ,
array('className','gc'),
)
className の 6 つの静的メソッドを呼び出す class.className オブジェクトを変更できる場合は静的メソッドを呼び出す必要はありませんが、オブジェクトを変更する場合はオブジェクトを生成する必要はありません。静的メンバーを使用するため、パフォーマンスが向上します。
2.6 よく使用されるセッション関数:
session_start(void); セッションを初期化します。
bool session_destroy(void): サーバー側のセッション関連付けドキュメントを削除します。 stringsession_id() 現在のセッションの ID
stringsession_name() 現在アクセスされているセッションの名前。クライアントがセッション ID を保存する Cookie 名です。デフォルトは PHPSESSID です。arraysession_get_cookie_params() このセッションに関連付けられたセッションの詳細
stringsession_cache_limiter() セッション ini を使用してページのクライアント キャッシュを制御します session_cache_expire() クライアントのキャッシュ時間を制御します bool session_destroy() セッション情報を保存するサーバー側のファイルを削除します void session_set_cookie_params ( int lifetime [, stringpath [, stringdomain [, bool secure [, bool httponly]]]] ) このセッションに関連付けられたセッションの詳細を設定します bool session_set_save_handler ( callbackopen、callbackclose、callbackread、callbackwrite、callbackdestroy、callbackgc ) セッションを定義します処理関数 (デフォルトのメソッドを使用しない)
bool session_regenerate_id([bool delete_old_session]) は、新しいセッション ID を割り当てます
2.7 セッション セキュリティの問題 攻撃者は、既存のユーザーの有効なセッション ID を取得するために多大な労力を費やします。セッション ID は、システム内でこのユーザーと同じ機能を持つことができる可能性があります
したがって、私たちの主な解決策は、セッション ID の有効性を確認することです
if(!isset($_SESSION[ 'user_agent'])){
$_SESSION['user_agent'] = $_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT']
}
/* ユーザーセッション ID が false の場合*/elseif($ _SESSION ['user_agent'] != $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']) {
session_regenerate_id()
}
?> 2.8 Cookie を通過するセッションと通過するセッションの違いSID:
php5.2.1 のセッションのデフォルト設定では、セッションを生成するときに、サーバーはヘッダーの set-cookie を送信しながら、事前定義されたスーパー グローバル変数 SID を生成します (つまり、cookie の書き込みと SID のスローは同等です) .)、$_COOKIE['PHPSESSID'] が存在する場合、Cookie は書き込まれなくなり、スーパー グローバル変数 SID は生成されなくなります。
2.9 セッションの使用例<。 ;?php
/**
* セッションの正当性を検証します*
*/functionsessionVerify() {
if(!isset($_SESSION['user_agent'])){
$_SESSION['user_agent'] = MD5($_SERVER['REMOTE_ADDR']
.$_SERVER['HTTP_USER_AGENT']);
}
/* ユーザーセッション ID が偽の場合は、セッション ID を再割り当てします */elseif($_SESSION['user_agent'] != MD5($_SERVER['REMOTE_ADDR']
. $_SERVER['HTTP_USER_AGENT'])) {
session_regenerate_id();
}
/**
* セッションを破棄します
* 3 つのステップで完全に実装され、リークはありません*
*/functionsessionDestroy() {
setcookie(); '', time()-3600);
$_SESSION= array();
?>
注:
セッションヘッダー情報が送信される理由は、php5 では、すべての php セッションが送信されます。登録されたテーブルの設定オプションはすべてプログラミング中に設定可能です。通常の状況では、PHP のセッション レジストリ設定オプションを理解するには、
データを保存する際のセッション セッション処理関数を参照してください。 session は $_SESSION 配列をシリアル化することによって保存されるため、シリアル化に問題が発生する可能性があります。特殊な文字値は、base64_encode 関数でエンコードし、読み取り時に Base64_decode でデコードする必要があります。
http://www.bkjia.com/PHPjc/321607.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/321607.html技術記事 1. PHP の COOKIE クッキーは、リモートのブラウザ側にデータを保存し、それを使用してユーザーを追跡および識別するメカニズムです。 PHP は http プロトコルのヘッダー情報で Cookie を送信するため、setcookie() 関数は...