phpのsession熟知理解

1677 ワード

概念の理解:
sessionはwebで主にユーザーがあるサイトを閲覧し、そのサイトにアクセスしてからこのサイトを閉鎖するまでの時間を指す.
動作原理:
1.seesionを起動すると、サービス側はブラウザにPHPSESSIDのキー値を持つ一意のIDをローカルのクッキーに保存し、サーバーの対応するディレクトリの下でキー値に基づいて対応するsessionファイルを生成する.
セッション値を設定すると、そのセッションファイルに値が存在します.
2.サーバphpスクリプトがセッション値を読み込むと、ブラウザはキー値の一意の識別を呼び出し、セッションを起動し、キー値に基づいて格納された変数をセッションファイルからロードできます.
3.phpスクリプトの実行が終了すると、破棄されていないセッション変数は、ローカルの一定のパスの下で一意に識別するセッションファイルに自動的に保存され、パスはphpを通過することができる.iniのセッションsave_path設定
1.session値を設定するには、sessionを開始してから設定する
session_start();
$_SESSION['name'] = 'wyz';

2.セッション値の読み込み
session_start();
echo $_SESSION['name'];

3.セッションの削除
a.単一
unset($_SESSION['name']);

b.すべてについて
session_destroy();

4.sessionの一意識別値クッキーのブラウザでの保持時間を設定し、session値を格納する時間を設定してもよい
session_start(); 
$_SESSION['name'] = 'wyzss';
$lifeTime = 24 * 3600;
setcookie(session_name(), session_id(), time() + $lifeTime, "/");

注:phpを設定します.iniの下のgc_maxlifetimeはsessionの生存の最短時間しか保証できません
セッションが30分後に期限切れになることを厳格に制限します:1.クライアントクッキーのlifetimeを30分に設定します.2.sessionの最大生存周期も30分に設定する.3.セッション値ごとにタイムスタンプを加え、プログラム呼び出し時に判断する.
$_SESSION['expiretime'] = time() + 3600;
if(isset($_SESSION['expiretime'])) {
	if($_SESSION['expiretime'] < time()) {
		unset($_SESSION['expiretime']);
		header('Location: logout.php?TIMEOUT'); //   
		exit(0);
	} else {
		$_SESSION['expiretime'] = time() + 3600; //      
	}
}