Quantcast
Channel: omnioo lab. record » PHP/MySQL
Viewing all articles
Browse latest Browse all 59

phpのsession設定

$
0
0

PHPは比較的簡単なアプリを作るのにすこぶる向いているのですが、結構適当に作ると何かと面倒なことになるのでフォームとかそこら辺りの入力系の某はsessionはってあったほうがいいです。アクセス数殆どなしみたいなページだと問題ないですが、数万アクセス/1日という大企業とかのアプリでは痛い目にあいますよ。ガチガチで作る方法はまだあるとして基本的な作りはこんな感じになります。全ページに同じソース貼っておけばいいです。

# session
session_start();
if (!isset($sessid)) {
$sessid = session_id();
}

# session validate
if (!isset($_COOKIE[“PHPSESSID”]) && !isset($_SESSION[‘viscnt’])){
$pathinfo = pathinfo(__FILE__);
}

# session start
$_SESSION[‘viscnt’] = 0;
//print ‘cookie: ‘.$_COOKIE[“PHPSESSID”].”<br>”;
//print ‘session: ‘.$sessid.”<br>”;
//print ‘times: ‘.”初回<br>\n”;
} else {
$_SESSION[‘viscnt’]++;
if ($sessid != $_COOKIE[“PHPSESSID”]) {
header(“Location: /”);
}
//print ‘cookie: ‘.$_COOKIE[“PHPSESSID”].”<br>”;
//print ‘session: ‘.$sessid.”<br>”;
//print ‘times: ‘.$_SESSION[‘viscnt’].”回<br>\n”;
}

特に何もしない限りsessionがスタートすると$_COOKIE[“PHPSESSID”]が自動的に設定されます。このidはsession_id();とイコールになります。cookie(クライアント側)に保存してあるidとsession_id(サーバー側)に保存してあるidを比較して違ったら駄目だよというものです。会員ページとかそういうものに使います。ログアウトみたいなアクションがあったらsessionを壊せばいいです。session_destroy()だけで全部消滅するわけではないのでcookieやsession変数などは個別に削除します。

unset($_SESSION[‘viscnt’]);
setcookie(“PHPSESSID”, ”, time() – 3600, ‘/’);
session_destroy();

個別にガチガチにsession組む場合は全ページから何らかのパラメーターを渡して次頁で比較というのが最も楽かなと。



Viewing all articles
Browse latest Browse all 59

Trending Articles