###前提・実現したいこと
「気づけば プロ並み PHP(改訂版)」で勉強をしているのですが
調べても、動作が本通りにできず、相談させていただきました。
環境:XAMPP(バージョン 7.7.7)
OS:windows10(64bit)
###発生している問題・エラーメッセージ
場所:Chapter4 以降のログイン画面作成画面
エラーメッセージ:ログインを試すとチェック用に用意したPHPのコードが表示されます。
試しに間違えて入力をしてみると、「ただいま障害により大変ご迷惑をおかけしております。」が表示されてきます。
[追記]
再度動作を確認してみたところ、ログインを試してもPHPのコード(記述したソースそのもの)が表示されてくるようになりました。
どこで違いが出てきたのかはわかりません。
また、Apacheのエラーログ(他のログも含めて)を確認してみましたが
ログインを試した後にログがあるか確認したところ、ログインを試した時間の
ログは確認できませんでした。
###該当のソースコード
詰まった部分の流れとしては以下です。
2の部分で、なぜかPHPのソースが表示されてきました。
1.「staff_login.html」でログインのリクエスト
2.「staff_login_check.php」で内容のチェック
(内容が間違えていればエラー表示)
3.ログインが成功すれば「staff_top.php」が表示される
HTML
1「staff_login.html」のコードは以下です。 2<!DOCTYPE html> 3<html> 4<head> 5 <meta charset="utf-8"> 6 <title>ろくまる農園</title> 7</head> 8<body> 9 スタッフログイン<br> 10 <br> 11 <form method="post" action="staff_login_check.php"> 12 スタッフコード<br> 13 <input type="text" name="code"><br> 14 パスワード<br> 15 <input type="password" name="pass"><br> 16 <br> 17 <input type="submit" value="ログイン"> 18 </form> 19</body> 20</html> 21
PHP
1「staff_login_check.php」のコードは以下です。 2<?php 3 4try{ 5 $staff_code=$_POST['code']; 6 $staff_pass=$_POST['pass']; 7 8 $staff_code=htmlspecialchars($staff_code,ENT_QUOTES,'UTF-8'); 9 $staff_pass=htmlspecialchars($staff_pass,ENT_QUOTES,'UTF-8'); 10 11 $staff_pass=md5($staff_pass); 12 13 $dsn='mysql:dbname=shop;host=loalhost;charset=utf8'; 14 $user='root'; 15 $password=''; 16 $dbh=new PDO($dsn,$user,$password); 17 $dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 18 19 $sql='SELECT name FROM mst_staff WHERE code=? AND password=?'; 20 $stmt=$dbh->prepare($sql); 21 $data[]=$staff_code; 22 $data[]=$staff_pass; 23 $stmt->execute($data); 24 25 $dbh=null; 26 27 $rec=$stmt->fetch(PDO::FETCH_ASSOC); 28 29 if($rec==false){ 30 print 'スタッフコードかパスワードが間違っています。<br>'; 31 print '<a href="staff_login.html">戻る<br>'; 32 }else{ 33 header('Location:staff_top.php'); 34 exit(); 35 } 36}catch(Exception $e){ 37 print 'ただいま障害により大変ご迷惑をおかけしております。'; 38 exit(); 39}
PHP
1「staff_top.php」のコードは以下です。 2<!DOCTYPE html> 3<html> 4<head> 5 <meta charset="utf-8"> 6 <title>ろくまる農園</title> 7</head> 8<body> 9 ショップ管理トップメニュー<br> 10 <br> 11 <a href="../staff/staff_list.php">スタッフ管理</a><br> 12 <br> 13 <a href="../product/pro_list.php">商品管理</a><br> 14</body> 15</html>
###試したこと
1.本を出しているサイトにて、正誤表の確認
→問題なし
2.本内にある別の章のコードと見比べてみる
→サーバー接続部分のみですが、あっているかと思われます。
3.他のサイトで同じ案件が上がっていないか確認
→見つけられませんでした
4.全角スペースがないかの確認
→なし
###補足情報(言語/FW/ツール等のバージョンなど)
恐らく、try内にあるif文かサーバーの接続を行う部分に問題があるのかな・・・とは思うのですが
見つけられませんでした。
ご助力いただけますと幸いです。
###追記(2017/08/17 13:30)
コメントでご指摘いただいた、
echo '捕捉した例外: ', $e->getMessage(), "\n";
を追加し試してみたところ、以下のエラーメッセージが表示されました。
捕捉した例外: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: ���̂悤�ȃz�X�g�͕s���ł��B
さらにネットで調べていくと、IPの変換ができない(localhostで接続していること)
が原因とのことでしたので、試しに「http://127.0.0.1/staff_login/staff_login.html」でログインを行いましたが
エラーメッセージが変わらない状態です。
PHPのPDOでhostをlocalhostに指定するとエラーになる
エラーログも確認してみましたが、実行後の同時刻のエラーは見つけきれませんでした。
回答1件
あなたの回答
tips
プレビュー