スポンサーサイト

一定期間更新がないため広告を表示しています

| スポンサードリンク | | - | - | pookmark |
Entry: main  << >>
セッション機能 / session vol.1
◆セッション変数とは($_SESSION)

Webアプリケーションでは基本的にひとつのPHPファイルでひとつの画面が構成される。そのため、複数の画面を作る場合は、その画面の数だけPHPファイルが必要となる。

通常、ユーザが閲覧しているPHPスクリプト画面においてスクリプトの実行が終了するとPHPの変数はサーバのメモリ上から消えてしまう。次の画面に進んだときには、前画面で変数にセットされた値は全てクリアされた状態になっている。

しかし、画面が遷移しても継続して以前の変数を保持しておきたい場合がある。例えば会員専用ページがあるサイト等。

こういったサイトでは、ログイン成功時に「PHP変数内にログインに成功した証拠」を保持しておき、その他の全ての会員専用ページにアクセスするたびに、この「証拠」があるかどうかを確認している。

このように画面を遷移しても変数を保持しておくには「セッション機能」を使う。

◆セッション機能を使う

セッション機能は「$_SESSION」という変数に値を格納することで利用できる。この機能は仕組みをしっかり理解しておかないとセキュリティホールやバグ発生原因となりやすいので注意が必要。

$_SESSION変数を利用するには、session_start();関数を一度だけ呼び出す必要がある。呼び出さないまま利用すると、ただの変数として扱われてしまうので注意が必要。

*session_start();は一番先頭に記述(PHPスクリプトの)されていることが望ましい。
◆実際にセッション機能を実装する

ログイン画面(session1.php)>> 会員専用画面(session2.php)>> ログアウト画面(session3.php)という流れでセッション機能を実装していく。

session1.php(ログイン画面)
<?php
// session_start関数の実行によってsessionを開始する
session_start();

// session変数に値を格納する
// 通常session変数には配列で値を格納する
// 配列の形で値を格納することで、無数に値を保持することが出来る
$_SESSION["loginname"] = "username_sample";

// ↑ ここではloginnameというキーに値を格納している
// この配列は別のスクリプトでもログイン認証のための変数となる
?>

セッションを開始しました。<br />
ログインしている状態です。
<a href="session2.php">次のページ</a>に進んで下さい。

続いて、会員専用画面を作成する。この画面では、ログイン画面で格納したセッション変数の値が正しく代入されているかを判定する。(正しいログインかどうかを簡易的に確認する)

変数が正しく格納されていない場合はエラーメッセージを出力し、正しい場合はログインが成功している人にのみ閲覧が許されたコンテンツを表示する。

*ログイン画面を経由せずに直接この画面へアクセスすることを「防がなくてはならない」画面である。

session2.php(会員専用画面)
<?php
// session開始
session_start();

if ($_SESSION["loginname"] != "username_sample") {

// エラー時に出力するメッセージ
echo "このページをご覧になるにはログインが必要です。";
echo "既にログイン情報は削除されていますので、再度ログインをし直してください。";
echo "<a href='session1.php'>ログインページへ</a>";
} else {

// ログインに成功すると表示されるメッセージ
echo "<ul>
<li>会員専用画面です。</li>
<li>ログイン認証に成功しました。現在はログイン状態です。</li>
<li>次はログアウトによるセッション情報の削除処理です。</li>
<li><a href='session3.php'>ログアウトへ</a></li>
</ul>";
}
?>

ログアウト画面では、この後に会員専用画面へアクセスが出来ないようにセッション変数を削除する。(ログインしている証拠をなくしてしまう)これによって、再度ログインしなければ会員専用画面にはアクセスできなくなる。

ログインの初期化は、array構文によって配列のセッション変数を空にすることで行う。

session3.php(ログアウト画面)
<?php
// セッション開始
session_start();

// array関数でセッションの配列を空にして初期化する
$_SESSION = array();

echo "
セッションをクリアしてログアウトした状態です。<br />
セッションチェックをする会員専用ページに遷移すると、
セッション情報がないのでエラーメッセージが表示されます。<br />
<a href='session2.php'>会員専用ページ</a>に進んでみてください。<br />
<a href='session1.php'>ログイン画面へ</a>";
?>
| php | 16:33 | comments(0) | trackbacks(0) | pookmark |
スポンサーサイト
| スポンサードリンク | 16:33 | - | - | pookmark |
Comment








Trackback

Calendar

    123
45678910
11121314151617
18192021222324
252627282930 
<< June 2017 >>

Recommend

Recommend

Recommend

Profile

Search

Entry

Comment

Archives

Category

Link

Feed

Others

無料ブログ作成サービス JUGEM

Mobile

qrcode

Sponsored Links