こちらでは、プログラミングを体系的に学ぶ事のできる「ウェブカツ!!」にて使用している
ソースコードを掲載しております。
login.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
<?php error_reporting(E_ALL); //E_STRICTレベル以外のエラーを報告する ini_set('display_errors','On'); //画面にエラーを表示させるか //post送信されていた場合 if(!empty($_POST)){ //本来は最初にバリデーションを行うが、今回は省略 //変数にユーザー情報を代入 $email = $_POST['email']; $pass = $_POST['pass']; //DBへの接続準備 $dsn = 'mysql:dbname=php_sample01;host=localhost;charset=utf8'; $user = 'root'; $password = 'root'; $options = array( // SQL実行失敗時に例外をスロー PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // デフォルトフェッチモードを連想配列形式に設定 PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, // バッファードクエリを使う(一度に結果セットをすべて取得し、サーバー負荷を軽減) // SELECTで得た結果に対してもrowCountメソッドを使えるようにする PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true, ); // PDOオブジェクト生成(DBへ接続) $dbh = new PDO($dsn, $user, $password, $options); //SQL文(クエリー作成) $stmt = $dbh->prepare('SELECT * FROM users WHERE email = :email AND pass = :pass'); //プレースホルダに値をセットし、SQL文を実行 $stmt->execute(array(':email' => $email, ':pass' => $pass)); $result = 0; $result = $stmt->fetch(PDO::FETCH_ASSOC); //結果が0でない場合 if(!empty($result)){ //SESSION(セッション)を使うにsession_start()を呼び出す session_start(); //SESSION['login']に値を代入 $_SESSION['login'] = true; //マイページへ遷移 header("Location:mypage.php"); //headerメソッドは、このメソッドを実行する前にechoなど画面出力処理を行っているとエラーになる。 } } ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ホームページのタイトル</title> <style> body{ margin: 0 auto; padding: 150px; width: 25%; background: #fbfbfa; } h1{ color: #545454; font-size: 20px;} form{ overflow: hidden; } input[type="text"]{ color: #545454; height: 60px; width: 100%; padding: 5px 10px; font-size: 16px; display: block; margin-bottom: 10px; box-sizing: border-box; } input[type="password"]{ color: #545454; height: 60px; width: 100%; padding: 5px 10px; font-size: 16px; display: block; margin-bottom: 10px; box-sizing: border-box; } input[type="submit"]{ border: none; padding: 15px 30px; margin-bottom: 15px; background: #3d3938; color: white; float: right; } input[type="submit"]:hover{ background: #111; cursor: pointer; } a{ color: #545454; display: block; } a:hover{ text-decoration: none; } .err_msg{ color: #ff4d4b; } </style> </head> <body> <h1>ログイン</h1> <form method="post"> <input type="text" name="email" placeholder="email" value="<?php if(!empty($_POST['email'])) echo $_POST['email'];?>"> <input type="password" name="pass" placeholder="パスワード" value="<?php if(!empty($_POST['pass'])) echo $_POST['pass'];?>"> <input type="submit" value="送信"> </form> </body> </html> |
mypage.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
<?php error_reporting(E_ALL); //E_STRICTレベル以外のエラーを報告する ini_set('display_errors','On'); //画面にエラーを表示させるか session_start(); //ログインしてなければ、login画面へ戻す if(empty($_SESSION['login'])) header("Location:login.php"); ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ホームページのタイトル</title> <style> body{ margin: 0 auto; padding: 150px; width: 25%; background: #fbfbfa; } h1{ color: #545454; font-size: 20px;} a{ color: #545454; display: block; } a:hover{ text-decoration: none; } </style> </head> <body> <?php if(!empty($_SESSION['login'])){ ?> <h1>マイページ</h1> <section> <p> あなたのemailは info@webukatu.com です。<br /> あなたのpassは password です。 </p> <a href="index.php">ユーザー登録画面へ</a> </section> <?php }else{ ?> <p>ログインしていないと見れません。</p> <?php } ?> </body> </html> |