home > PHP入門 > セッション

PHP入門の「に」

セッション

セッションとは

ユーザーが行う一連の通信
HTTPプロトコルでは1回の要求と応答が1組の通信。これらの通信は独立したやり取りであり、過去に行った通信とは関係ない。
ショッピングカートやログイン認証などでは、サーバーが過去の通信と同じユーザーがやりとりしているか(セッションが同じであるか)を判断する仕組みが必要となる。

クッキー(Cookie)

サーバーが発行したデータをブラウザ側の所定の位置に保存する仕組み

ブラウザは受け取ったクッキーデータを保存しておく
ブラウザは次回要求時に、受け取ったクッキーをサーバーに提示する。 サーバー側では、以前アクセスしてきたブラウザかどうか特定する。

セッション管理

ブラウザを識別するためのPHPの機能。
クッキーや<input>タグのhidden属性のしくみを利用する。

サーバーが発行したID(セッションID)をクッキーなどでブラウザに送る。 サーバー側では、やりとりに関する情報(セッション情報)や変数をセッションIDごとに管理する
ブラウザは次回要求時に、受け取ったデータをサーバーに提示する。 サーバー側では、受け取ったIDから、以前のデータを参照する。

▲このページのトップへ

クッキー

setcookie()関数
PHPでクッキーを発行する。<html>タグの出力より前に行う。
正常発行されたらtrue、失敗したらfalseを返す。
<?php
setcookie('val', 100);
?>

val クッキー名
100 クッキーの値
※発行したクッキーの内容はブラウザ側に保存される

有効期限を設定する
<?php
	setcookie('val', 100, time()+60);
?>
翻訳
有効期限を秒単位で指定する
発行時刻より60秒間有効
クッキーの削除

不要なクッキーは有効期限を過去の時間にして削除する

<?php
	setcookie('val, "", time()-60);
?>
翻訳
クッキーの値「""」 使われない
期限を過去の時間にしてクッキーのデータを削除
クッキーの受け取り

$getval = $_COOKIE['val'];

ブラウザからサーバーに送られたクッキー情報は、スーパーグローバル変数$_COOKIEで受け取る。
クッキー情報が送られなかったときの値はNULLになる。

例:cookie.php
<?php setcookie('val', 100); ?> ・・・クッキーを発行する

<html>
<body>
<?php
	$getval = $_COOKIE['val']; ・・・クッキーを受け取る
	print "ページ1の値は $getval です。<br />\n";
?>
<a href='cookie2.php'>ページ2へ</a> ・・・cookie2.phpにリンク
</body>
</html>
例:cookie2.php
<html>
<body>
<?php
	$getval = $_COOKIE['val']; ・・・クッキーを受け取る
	print "ページ2の値は $getval です。<br />\n";
?>
<a href='cookie.php'>ページ1へ</a> ・・・cookie.phpにリンク
</body>
</html>
実行結果
-cookie.php-
ページ1の値は です。 ―クッキーを発行するが、まだ値を受け取っていない
ページ2へ
クリック↓
-cookie2.php-
ページ2の値は 100 です。 ―クッキーを受け取り値を表示
ページ1へ
クリック↓
-cookie.php-
ページ1の値は 100 です。 ―クッキーを受け取り値を表示
ページ2へ

※このようにならない!

▲このページのトップへ

セッション管理

session_start()関数
<html>タグの出力より前で呼び出す
<?php session_start(); ?>
セッション変数の受け渡し

スーパーグローバル変数$_SESSIONに値を格納すると、同一のセッションで値を共有できる。
このような変数を「セッション変数」という

$_SESSION['bridge'] = 100;
	bridge セッション変数($をつけない)
	100 セッション変数の値
session_register()関数
session_register()で登録した変数も同一セッション間で利用できる。
 $_SESSIONでは参照できない
session_register('bridge');
$bridge = 100;
	bridge セッション変数名($をつけない)
	$bridge セッション変数名と同じ名前にする
	100 セッション変数の値
セッションの終了
session_destroy();
例:session.php
<?php
	session_start(); ・・・セッション開始を宣言
?>

<html>
<body>
<?php
	$_SESSION['bridge'] = 100; ・・・セッション変数を登録
	$b = $_SESSION['bridge']; ・・・セッション変数を受け取る
	print "ページ1の値は ".$b." です。<br />\n";
?>
<a href='session2.php'>ページ2へ</a> ・・・session2.phpにリンク
</body>
</html>
例:session2.php
<?php
	session_start(); ・・・セッション開始を宣言
?>

<html>
<body>
<?php
	$b = $_SESSION['btidge']; ・・・セッション変数を受け取る
	print "ページ2の値は ".$b." です。<br />\n";
?>
<a href='session.php'>ページ1へ</a> ・・・session.phpにリンク
</body>
</html>
実行結果
-cookie.php-
ページ1の値は です。
ページ2へ
クリック↓
-cookie2.php-
ページ2の値は 100 です。 ―セッション変数が受け渡される
ページ1へ
クリック↓
-cookie.php-
ページ1の値は 100 です。 ―セッション変数が受け渡される
ページ2へ
前へ 次へ

▲このページのトップへ