質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

7488閲覧

ログイン画面で次の画面に遷移しません

dog57

総合スコア131

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

1クリップ

投稿2017/12/05 13:15

編集2017/12/06 00:21

このようなログイン機能をを作成しています。
ですが、ログインボタンをクリックしても次の画面に遷移しません。

エラー文が出てこないので、原因がわからないです。。
一体、どこが原因なのでしょうか?
イメージ説明

どなかたご教授いただけると嬉しいです。

login_form.php (画像の画面) htmlは一部抜粋

php

1<?php 2// 開発時にこれを書かないのはNG 3ini_set('display_errors', true); 4error_reporting(E_ALL); 5 6session_start(); 7header("Content-type: text/html; charset=utf-8"); 8 9// クロスサイトリクエストフォージュリ(CSRF)対策 10$_SESSION["token"] = base64_encode(openssl_random_pseudo_bytes(32)); 11$token = $_SESSION["token"]; 12 13// クリックジャッキング対策 14header("X-FRAME-OPTIONS: SAMEORIGIN"); 15 16$errors = ''; 17 18 19 ?> 20 21 <!-- パンくずリスト--> 22 <ol class="breadcrumb"> 23 <li><a href="http://192.168.33.15"><span class="glyphicon glyphicon-home" aria-hidden="true"></span>トップ</a></li> 24 <li class="active">ログインフォーム</li> 25 </ol> 26 27 28 <div class="container"> 29 30 <?php if (count($errors) > 0): ?> 31 <?php foreach ((array)$errors as $value): ?> 32 <?php echo "<font color=RED>".$value."</font>"."<br>" ?> 33 <?php endforeach; ?> 34 <?php endif; ?> 35 36 <div id="loginbox" style="margin-top:50px;" class="mainbox col-md-6 col-md-offset-3 col-sm-8 col-sm-offset-2"> 37 <div class="panel panel-info" > 38 <div class="panel-heading"> 39 <div class="panel-title">Sign In</div> 40 <div style="float:right; font-size: 80%; position: relative; top:-10px"><a href="#">Forgot password?</a></div> 41 </div> 42 43 <div style="padding-top:30px" class="panel-body" > 44 45 <div style="display:none" id="login-alert" class="alert alert-danger col-sm-12"></div> 46 47 <form id="loginform" class="form-horizontal" role="form" method="post" action="login_admin.php"> 48 49 <div style="margin-bottom: 25px" class="input-group"> 50 <span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span> 51 <input id="login-username" type="text" class="form-control" name="username" value="" placeholder="username or email"> 52 </div> 53 54 <div style="margin-bottom: 25px" class="input-group"> 55 <span class="input-group-addon"><i class="glyphicon glyphicon-lock"></i></span> 56 <input id="login-password" type="password" class="form-control" name="password" placeholder="password"> 57 </div> 58 59 60 61 <div class="input-group"> 62 <div class="checkbox"> 63 <label> 64 <input id="login-remember" type="checkbox" name="remember" value="1"> Remember me 65 </label> 66 </div> 67 </div> 68 69 70 <div style="margin-top:10px" class="form-group"> 71 <!-- Button --> 72 73 <div class="col-sm-12 controls"> 74 <button name="login-button" id="btn-login" class="btn btn-success">Login</button> 75 <a id="btn-fblogin" href="#" class="btn btn-primary">Login with Facebook</a> 76 77 </div> 78 </div> 79 80

login_check.php (チェック) html省略

php

1<?php 2// 開発時にこれを書かないのはNG 3ini_set('display_errors', true); 4error_reporting(E_ALL); 5 6session_start(); 7header("Content-type: text/html; charset=utf-8"); 8 9// クロスサイトリクエストフォージュリ(CSRF)対策のトークン判定 10 if ($_POST["token"] != $_SESSION["token"]) { 11 echo "不正アクセスの可能性あり。"; 12 exit(); 13 } 14 15// クリックジャッキング対策 16header("X-FRAME-OPTIONS: SAMEORIGIN"); 17 18// 変数の初期化 19$email = ''; 20 21// セッション変数の定義 22 23// エラーメッセージの配列の初期化 24$errors = array(); 25// セッション変数の初期化 26$_SESSION['errors'] = array(); 27 28// データベース接続 29require_once(__DIR__. '/db.php'); 30 31// 前後にある半角全角スペースを削除する関数 32function spaceTrim($str) { 33 34 // 行頭 35 $str = preg_replace('/^[ ]+/u', '', $str); 36 // 末尾 37 $str = preg_replace('/[ ]+$/u', '', $str); 38 39 return $str; 40} 41 42// エラーメッセージの初期化 43$errors = array(); 44 45// POST時 46if (filter_input(INPUT_SERVER, 'REQUEST_METHOD') == "POST") { 47 48 // POSTされたデータを各変数に入れる 49 $username = filter_input(INPUT_POST, 'username'); 50 $password = filter_input(INPUT_POST, 'password'); 51 52 // 前後にある半角全角スペースを削除 53 $username = spaceTrim($username); 54 $password = spaceTrim($password); 55 56 // アカウント入力判定 57 if (empty($_SESSION["username"])) { 58 $errors[] = "usernameもしくは、emailが入力されていません。"; 59 } 60 61 // パスワード入力判定 62 if (empty($_SESSION["password"])) { 63 $errors[] = "パスワードが入力されていません。"; 64 } elseif (preg_match('/^[0-9a-zA-Z]{1,7}$/', $password)) { 65 $errors[] = "パスワードは8文字以上で入力してください。"; 66 } else { 67 $password_hide = str_repeat('*', strlen($password)); 68 } 69} 70 71// エラーがなければ実行する 72if (count($errors) == 0) { 73 try { 74 // 例外処理を投げる(スロー)ようにする 75 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 76 77 // アカウントで検索 78 $statement = $dbh->prepare("SELECT * FROM users WHERE email=(:email)"); 79 $statement->bindValue(":email", $email, PDO::PARAM_STR); 80 $statement->execute(); 81 82 // アカウントが一致 83 if ($row = $statement->fetch()) { 84 $db_password = $row["password"]; 85 86 // パスワードが一致 87 if ($password === $db_password) { 88 89 // セッションハイジャック対策 90 session_regenerate_id(true); 91 92 $_SESSION["username"] = $username; 93 header("Location: login_admin.php"); 94 exit(); 95 } else { 96 $errors[] = "アカウント及びパスワードが一致しません。"; 97 } 98 } else { 99 $errors[] = "アカウント及びパスワードが一致しません。"; 100 } 101 102 if (count($errors) > 0) { 103 $errors = $_SESSION["errors"]; 104 foreach ($errors as $value) { 105 echo $error; 106 } 107 header("Location: login_form.php"); 108 } 109 110 // データベース切断 111 $dbh = null; 112 } catch (PDOException $e) { 113 print("Error:" .$e->getMessage()); 114 die(); 115 } 116} 117 118?>

遷移先 login_admin.php

php

1<?php 2// 開発時にこれを書かないのはNG 3ini_set('display_errors', true); 4error_reporting(E_ALL); 5 6session_start(); 7header("Content-type: text/html; charset=utf-8"); 8 9$username = ''; 10 11 12// ログイン状態のチェック 13if (!isset($_SESSION["username"])) { 14 header("Location: login_form.php"); 15 exit(); 16} 17 18function h($string) { 19 return htmlspecialchars($string, ENT_QUOTES, "UTF-8"); 20} 21 22 ?> 23 24<!DOCTYPE html> 25<html lang="ja"> 26 <head> 27 <meta charset="utf-8"> 28 <title>ログイン</title> 29 </head> 30 <body> 31 32 <?php echo h($username)."さん、こんにちは!"; ?> 33 34 <a href="logout.php">ログアウトする</a> 35 36 </body> 37</html> 38

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/12/05 14:14

ログイン処理に該当する処理が提示されていませんが・・・
dog57

2017/12/06 00:17

追記いたしました。よろしくお願いします。
guest

回答1

0

ベストアンサー

問題がありそうな箇所をログに出すか画面に表示するようにすればデバッグできるかと。

login_admin.php

php

1// ログイン状態のチェック 2var_dump($_SESSION); 3exit(); 4 5if (!isset($_SESSION["username"])) { 6 header("Location: login_form.php"); 7 exit(); 8}

投稿2017/12/05 15:21

ooeok

総合スコア469

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/12/05 15:33

フォームからポストしたさきにSESSIONに保存する前にSESSIONをチェックしてるからデバッグしないでもわかるきが・・・
ooeok

2017/12/05 15:59

まあそうなんですが・・・。 質問者さんは原因が分からないと言われているので、なぜ遷移しないのか理解しやすい形で提示してあげた方がいいと思います。 初心者には、頭の中のフローと実際に動いているコードとの差異をできるだけ明確にしてあげるべきなんじゃないでしょうか。
dog57

2017/12/06 02:42

var_dump でデバックしてみようと思います。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問