11 ソーシャルブックマーク4
DESCRIPTION
セッション管理TRANSCRIPT
PHP講座(11)!ソーシャルブックマーク4
この授業ではソーシャルブックマークアプリケーションの完成を目指すための「ログイン」機能を実装します。 また、その中心的な役割を果たす「セッション機構」についても勉強します。
ログイン機能の概要
10.4.18 (C) 株式会社破滅派
2
A.ページAにいた人がページBにきた人と同じだと証明する機能
Q. ログイン機能を実装するために必要な機能は?
ログインフォームで正しい値を入力したAさん
ページBに移動します。
今ページを見ているのはログイン済みのAさんだな!
ログイン=セッションの利用
10.4.18 (C) 株式会社破滅派
3
【セッションとは?】 ユーザーがサイトを訪れて取る一連のページ移動を「セッション」と呼びます。 PHPはこのセッションの間、変数$_SESSION(セッション変数)に情報を記憶することができます。 セッションを使わない場合は誰がきても同じ結果を表示
セッションを使えば、ユーザーの情報に応じて処理を変えられる
ex.amazon.co.jp
セッションの利用の仕方
10.4.18 (C) 株式会社破滅派
4
【注意点】 session_start()関数はブラウザに何かを表示する前に行うようにしてください。 ブラウザに出力が行われたあとにsession_startを行うと、エラーが出ます。
セッションの設定はphpの設定ファイルのphp.iniに書かれています。 有効期限などはこの設定次第で変更できないことがあります。
<?php //セッション開始 session_start(); //これ以降、セッション変数が使える if(isset($_SESSION[“login”])){ $user = $_SESSION[“uid”]; }else{ $user = “guest”; }
?>
【よく使うセッション関数】
session_start() セッションの利用を開始する
session_destroy() セッション変数を空にする(ログアウトのときなどに使う)
session_cache_expire($limit) セッションの有効期限を設定する(デフォルトはブラウザを閉じるまで)
セッションを利用したログインのアルゴリズム
10.4.18 (C) 株式会社破滅派
5
【ぺちぱブックマークにログイン機能を実装する】
1. すべてのページでセッション関数を開始(@bootstrap.php)
2. ログインページでユーザー名とパスワードをチェック
3. あっていたらセッション変数にログイン情報を書き込み
4. ログアウトページでセッションを破棄する
セッションの仕組み
10.4.18 (C) 株式会社破滅派
6
1.セッション開始時
セッション保存フォルダ Cookie
1.アクセス
2.IDをCookieに保存
3.セッション変数を指定のフォルダに保存
【Cookieとは?】 ブラウザに用意された書き込みを許可された領域。 PHPが書き込める伝言板のようなもの。 容量は4096byteまで。 ブラウザが許可していない場合は書き込めない。
2.セッション利用時
セッション保存フォルダ Cookie
1.アクセス
2.Cookieを見て、セッションIDがあるかどうかを確認
3.セッションIDがあれば、該当する変数を取得
【セッションファイルの保存期限】 セッションファイルは一定期間(初期設定では24分)で削除されます。 セッション変数はフォルダではなく、データベースに保存することもできます。
Cookieが使えない場合のセッション利用法
10.4.18 (C) 株式会社破滅派
7
【原則】
ユーザにCookieを使えるよう設定してもらう
Amazonでさえ、ブラウザがCookieの利用を許可していない場合は、サイトの利用ができません。
他にセッションを使う方法はありますが、「ヘルプページを充実させる」などの運用でカバーしましょう。 セキュリティホールを作るより100倍ましです。
Cookieを使わずにどうしてもセッションを利用したい場合
10.4.18 (C) 株式会社破滅派
8
NTT DocomoとSoftbankの一部の携帯はCookieを使えません。 つまり、携帯対応サイトを作る場合は別の方法でセッションを使う必要があります。
【セッションIDをURLの末尾につける方法】 php.iniまたは.htaccessでsession.user_trans_idを1に設定すると、すべてのサイト内リンクにセッションIDが付与される。 → ./member.php?PHP_SESID=3246897t744221t
【問題点】 セッションIDが丸見え。 HTTP_REFFEREを見れば、外部のサイトからでもセッションIDを知ることができてしまう。 Cookieなら外部ドメインからは知ることはできない。
【※携帯でセッションを利用する際の注意点】 1. サイト内のURLはすべて相対リンクで書き込む
2. 外部サイトに移動する場合は、かならず中継ページを経由させ、セッションIDを削除(2ちゃんと一緒)
携帯サイト開発は色々と奥が深いので、専門の書籍やサイトで勉強してみることをおすすめします。
PHPの経験を半年~1年ほど積めば、それほど難しくありません。
セッションとセキュリティ
10.4.18 (C) 株式会社破滅派
9
セッションはCookieにIDを書き込むため、ブラウザが同じならIDも同じです。 つまり、ログインした状態で他の誰かがそのPCを使うことがありえるということになります。
amazonはログインしている状態で「アカウント情報」のページにいくと…
パスワードの入力をもう一度求められます。
セッションによるログイン機能を実装したからといって、セキュリティが万全になるわけではありません。 「買い物カゴ」「アカウント設定」などの重要な情報(個人情報・決済)は二重の確認を取るようにしましょう。