PHPセッションの使い方
ログイン機能を作る前に、PHPセッションの使い方です。
使うのは、下記の2つ。たった2つ。
session_start
session_destroy
環境によっては、クッキーも使うのでプラスαで3つ。
ini_get
session_get_cookie_params
setcookie
でわ、それぞれの説明。
1.session_start
セッションデータを初期化します。
セッション変数を作成、または復帰させます。
要は、セッション変数を扱うスクリプトの一番最初に呼び出せってことです。
2.session_destroy
セッションに登録されたデータをすべて破棄します。
すでに作成されたセッション変数を初期化します。
使い終わったら初期化するってことです。
ログアウト処理なんかで使うのが一般的な使い方だと思います。
3.ini_get
PHPの設定ファイルから設定された値を取得します。
下の例でわ、session.use_cookiesの値を取得しています。
4.session_get_cookie_params
セッションクッキーのパラメータを取得します。
取得出来るパラメータは以下のとおり。
lifetime クッキーの有効期限
path 情報が保存されている場所のパス
domain クッキーのドメイン
secure セキュアな接続でのみ送信される。
httponly HTTPを通してのみアクセス可能となる。
secureとhttponlyってなんだかよくわかんないですね・・・
5.setcookie
クッキーを送信する
PHPはsessionを使うとcookieも送信するようです。
そのcookieを設定します。
下の例では、送信するcookieを初期化するために使用しています。
例を見ると cookieが送信されていることがわかります。
でわ、sessionを使ったサンプルです。
<body>
<h1>現在のsession変数一覧</h1>
<?php
$t = time();
session_start();
$_SESSION['hoge'] = $t;
echo $t;
?>
を<font color="red">$_SESSION['hoge']</font>に保存しました。<br />
<br />
<a href="session.php">保存されていることを確認する</a>
</body>
index.php
<body>
<h2>保存されているsession変数一覧</h2>
<?php
session_start();
foreach ($_SESSION as $key => $s)
{
echo "[$key] <font color=\"red\">$s</font>\n";
}
?>
<h2>保存されているcookie変数一覧</h2>
<?php
foreach ($_COOKIE as $key => $c)
{
echo "[$key] <font color=\"blue\">$c</font>\n";
}
?>
<br />
<br />
<a href="close.php">session変数を削除する</a>
</body>
session.php
<body>
<h1>session変数を削除しました</h1>
<?php
session_start();
if (ini_get("session.use_cookies"))
{
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
session_destroy();
?>
<a href="session.php">削除されていることを確認する</a>
</body>
close.php
session.php
使うのは、下記の2つ。たった2つ。
session_start
session_destroy
環境によっては、クッキーも使うのでプラスαで3つ。
ini_get
session_get_cookie_params
setcookie
でわ、それぞれの説明。
1.session_start
セッションデータを初期化します。
セッション変数を作成、または復帰させます。
要は、セッション変数を扱うスクリプトの一番最初に呼び出せってことです。
2.session_destroy
セッションに登録されたデータをすべて破棄します。
すでに作成されたセッション変数を初期化します。
使い終わったら初期化するってことです。
ログアウト処理なんかで使うのが一般的な使い方だと思います。
3.ini_get
PHPの設定ファイルから設定された値を取得します。
下の例でわ、session.use_cookiesの値を取得しています。
4.session_get_cookie_params
セッションクッキーのパラメータを取得します。
取得出来るパラメータは以下のとおり。
lifetime クッキーの有効期限
path 情報が保存されている場所のパス
domain クッキーのドメイン
secure セキュアな接続でのみ送信される。
httponly HTTPを通してのみアクセス可能となる。
secureとhttponlyってなんだかよくわかんないですね・・・
5.setcookie
クッキーを送信する
PHPはsessionを使うとcookieも送信するようです。
そのcookieを設定します。
下の例では、送信するcookieを初期化するために使用しています。
例を見ると cookieが送信されていることがわかります。
でわ、sessionを使ったサンプルです。
<body>
<h1>現在のsession変数一覧</h1>
<?php
$t = time();
session_start();
$_SESSION['hoge'] = $t;
echo $t;
?>
を<font color="red">$_SESSION['hoge']</font>に保存しました。<br />
<br />
<a href="session.php">保存されていることを確認する</a>
</body>
index.php
<body>
<h2>保存されているsession変数一覧</h2>
<?php
session_start();
foreach ($_SESSION as $key => $s)
{
echo "[$key] <font color=\"red\">$s</font>\n";
}
?>
<h2>保存されているcookie変数一覧</h2>
<?php
foreach ($_COOKIE as $key => $c)
{
echo "[$key] <font color=\"blue\">$c</font>\n";
}
?>
<br />
<br />
<a href="close.php">session変数を削除する</a>
</body>
session.php
<body>
<h1>session変数を削除しました</h1>
<?php
session_start();
if (ini_get("session.use_cookies"))
{
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
session_destroy();
?>
<a href="session.php">削除されていることを確認する</a>
</body>
close.php
session.php