時間外だけどやぎーにヒントもらって何とかクリア。
今日の問題は自力で解けなかった;
やり直すか・・・。
2時間目
cookieのこと。タイムアウト処理は省略。
sessionにも時間制限設定やりたかった(・・・と思ったら住所録拡張につながったよ↓)
cookieは値を直接ブラウザに入れる。
sessionはサーバー上に鍵(cookie)付の一時キャッシュで保管され、
ブラウザに鍵(cookie)が渡される。
アクセスのたびに鍵(cookie)を使い、サーバーにアクセスする。
そのままだと防御の手立てがないため、セットで覚える。
session_start()させたら、
攻撃を防ぐ関数:session_regenerate_id()を使う。
◆セッション開始とログイン処理の例。
//セッション機能を開始する=ロッカーを使用できるようにする=鍵を発行する //セッションID(SESSID)=セッションの鍵は32ケタの英数字 session_start(); //セッションハイジャック対策 session_regenerate_id(true); if ($_POST["id"] =="yamazaki" && $_POST["pass"] =="pass") { $_SESSION["loginname"]= $_POST["id"]; print 'ログインしました<a href="./session2.php">マイページ</a>へ進む<br />'; exit; } ?> <!DOCTYPE br PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> ログインしてください<br /> <form action = "session1.php" method = "POST" > ID:<br> <input type = "text" name = "id" value = "" /><br /> Password:<br> <input type = "password" name = "pass" value = "" /><br /> <input type = "submit" name = "login" value = "ログイン" /> </form> </body> </html>
◆セッション処理してマイページ表示
/***************************************************************** ■プログラム概要 【セッションIDが確認できる場合】 マイページを表示 【セッションIDが確認できない場合】 ログインページ(session1.php)に強制的に戻す header("location: http://*****) session2.php *****************************************************************/ //既にセッションが開始=鍵が発行されているので、その鍵をブラウザから受け取って //ロッカーの中身を確認しに行く session_start(); //セッションハイジャック対策 session_regenerate_id(true); if($_SESSION["loginname"]!="yamazaki"){ //header("location: http://*****)で、*****へ強制ジャンプ。ローカルは省略可能。 header("location: session1.php"); } ?> <!DOCTYPE br PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> マイページです。 <a href = "session3.php" >ここをクリック</a>するとログアウトします。 </body> </html>
3時間目
◆セッション削除
/***************************************************************** ■プログラム概要 ログアウトページ(セッションIDの破棄) session3.php セッションの破棄 ・$_SESSION = array() ; //ロッカー自体を撤去 ※array()は配列変数を初期化する記述 ・session_destroy //ロッカーの中身だけを消去 *****************************************************************/ //セッション機能を開始する=ロッカーを使用できるようにする=鍵を発行する //セッションID(SESSID)=セッションの鍵は32ケタの英数字 session_start(); //セッションハイジャック対策 session_regenerate_id(true); //ロッカー自体を撤去 $_SESSION = array() ; ?> <!DOCTYPE br PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> ログアウト(セッション変数を消去)しました。<br /> 現在未ログイン状態です。<br /> このまま<a href = "session2.php" >マイページ</a>に遷移することはできません </body> </html>
MVCモデル Model View Controllerから、
controllerの概念と機能を勉強するよ!
WEBアプリ必須のログイン画面をcontrollerでつけていくよ。
◆address_bookにuserテーブル追加~
CREATE TABLE `address_book`.`user` ( `user_id` VARCHAR( 20 ) NOT NULL , `user_name` VARCHAR( 20 ) NOT NULL , `user_nickname` VARCHAR( 20 ) NOT NULL , `password` VARCHAR( 10 ) NOT NULL , `authority` TINYINT( 1 ) NOT NULL , `create_at` DATETIME NOT NULL , `update_at` DATETIME NULL , `del_flg` TINYINT( 1 ) NOT NULL , PRIMARY KEY ( `user_id` ) ;
すいません取り合えずinsertからやりました。
でもあり? 権限はどこで処理するんだ?
管理者パスワードとユーザーパスワードとほんとは判定別だよね;
細けぇ(ryでAdminでとりま変更。
sessionのincludeは、HTMLの宣言前に置かないとエラーになる、そうです。
これで40分ぐらい悩みました・・・。
自分用メモ。
びびえすみなおせ~