PHP vol.17
- セッション
セッション
ログインが必要なものの場合、階層を進めてもログイン状態を維持する必要がある。
cookieを鍵としてセッションをあけることができる。
ただし、セッションとcookieは別のもの
使い方を誤るとセキュリティ上の問題になる。
セッションの有効期限を設定する
- session_set_cokkie_params(クッキー名,クッキーの値,有効期限,URLパス,ドメイン,セキュア属性,);
- ドメインはwww.example.comで書いた場合はexample.example.comでは使えない。
- セキュア属性をtrueにした場合はhttps://以外で使えない。http://には送られない。
セッションの開始
- session_start
セッションを破棄する
- session_destroy
その前にセッションの有効期限を過去にすることが必要。
セッションを使ったアクセスカウンタ
<?php // セッションの開始 session_start(); $access = 1; if (isset ($_SESSION['access'])) { $access = (int) $_SESSION['access'] + 1; } $_SESSION['access'] = $access; echo $access ."回目のアクセスです。";
問題
1,2,3,5,6,7,9,10,11,13,14,15,19,21という形で上がるカウンターを作れ
<?php session_start(); $num = 1; if (isset($_SESSION['num']) && $_SESSION['num'] < 21) { $_SESSION['num']++; if ($_SESSION['num']%4==0) { $_SESSION['num']++; } else { } } else { $_SESSION['num'] = $num; } echo $_SESSION['num'];
問題
入力した値を2時間覚えておくものを作れ。
<?php session_set_cookie_params(60*60*2); session_start(); if ($_SERVER['REQUEST_METHOD'] =='POST') { $id = $_POST['id']; if (!empty($id)) { $_SESSION['id'] = $id; } } else { } if (!isset($_SESSION['id'])) { $_SESSION['id'] =""; } if (!isset($_SESSION['id'])) { $msg = ""; } else { $msg = $_SESSION['id']."さん こんにちは!"; } ?> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> </head> <body> <form action="" method="post"> <input type="text" size="20" name="id" value="<?php echo $_SESSION['id']; ?>" /> <input type="submit" name="btn_submit" value="ログイン" /> </form> <hr /> <p><?php echo $msg; ?></p> </body> </html>
- PHPとHTMLは分離させたほうがよい。