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

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

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

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

Q&A

解決済

1回答

368閲覧

PHP 条件分岐が上手くいかない「

Chandler_Bing

総合スコア673

PHP

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

1グッド

0クリップ

投稿2018/12/23 07:48

PHP

1<!DOCTYPE html> 2<html lang="en" dir="ltr"> 3 4<head> 5 <meta charset="utf-8"> 6 <title>ろくまる農園</title> 7</head> 8 9<body> 10 スタッフ追加<br /> 11 <br /> 12 <form method="post" action="staff_add_check.php"> 13 スタッフ名を入力してください<br /> 14 <input type="text" name="name" width="200px"><br /> 15 パスワードを入力してください<br /> 16 <input type="password" name="pass" width="100px"><br /> 17 パスワードをもう一度入力してください<br /> 18 <input type="password" name="pass2" width="100px"><br /> 19 <input type="button" onclick="history.back()" value="戻る"> 20 <input type="submit" value="OK"> 21 </form> 22 23</body> 24 25</html> 26

PHP

1<!DOCTYPE html> 2<html lang="en" dir="ltr"> 3 4<head> 5 <meta charset="utf-8"> 6 <title>ろくまる農園</title> 7</head> 8 9<body> 10 11<?php 12 13$staff_name = $_POST['name']; 14$staff_pass = $_POST['pass']; 15$staff_pass2 = $_POST['pass2']; 16 17$staff_name = htmlspecialchars($staff_name, ENT_QUOTES, 'UTF-8'); 18$staff_pass = htmlspecialchars($staff_pass, ENT_QUOTES, 'UTF-8'); 19$staff_pass2 = htmlspecialchars($staff_pass2, ENT_QUOTES, 'UTF-8'); 20 21 22if ($staff_name == '') { 23 print 'スタッフ名が入力されていません。<br />'; 24} else { 25 print 'スタッフ名:'; 26 print $staff_name; 27 print '<br />'; 28} 29 30if ($staff_pass == '') { 31 echo 5; 32 print 'パスワードが入力されていません。<br />'; 33} 34 35if ($staff_pass != $staff_pass2) { 36 echo 6; 37 print 'パスワードが一致しません。<br />'; 38} 39 40if ($staff_name == '' || $staff_pass == '' || $staff_pass != $staff_pass2) { 41 echo 1; 42 print '<form>'; 43 print '<input type="button" onclick="history.back()" value="戻る">'; 44 print '</form>'; 45} else { 46 echo 2; 47 $staff_pass - md5($staff_pass); 48 print '<form method="post" action="staff_add_done.php">'; 49 print '<input type="hidden" name="name" value="'.$staff_name.'">'; 50 print '<input type="hidden" name="pass" value="'.$staff_pass.'">'; 51 print '<br />'; 52 print '<input type="button" onclick="history.back()" value="戻る">'; 53 print '<input type="submit" value="OK">'; 54 print '</form>'; 55} 56?> 57 58</body> 59 60</html>

PHPの参考書を動かしています。
上のページから下のページへと遷移する構成ですが、
入力ミスはないはずなのですが、何をしてもecho1のところに入ります。原因はなんでしょうか。

bochan2👍を押しています

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/12/23 07:55

そろそろ販売停止してほしいな「きずけばプロ並み(と思うやからを量産する)PHP」
退会済みユーザー

退会済みユーザー

2018/12/23 08:28

・PHPのバージョンはなにか? ・参考書といっているのはなんの本か? ・何をしてもと言われても、こちらではあなたが何をしたのか知りません。どうしたらどうなるのか、どうなってほしいのかをちゃんと書いてください。
m.ts10806

2018/12/23 08:35

デバッグ覚えればすぐ解決しますよ。
退会済みユーザー

退会済みユーザー

2018/12/24 08:46

brは<br/>なのにmetaやinputが<input/>してない荒いhtmlを見ると痒くなるので見なかったことにする
guest

回答1

0

ベストアンサー

まず考えることは、なぜif文に入らない想定なのに、入ってしまうのか?です。
つまり、どの条件判定がおかしいのかをデバッグして確認します。

今回該当するif文は以下かと思います。

if ($staff_name == '' || $staff_pass == '' || $staff_pass != $staff_pass2) {

まずはORで繋がれた上記3つの条件のうち、どれがtrueになっているのかを確認してください。
次になぜtrueになるのかを考えれば、解決できるはずです。

あくまで参考ですが、PHPの変数名の規則は以下を参照いただければ良いかと思います。
PHP: 基本的な事 - Manual

投稿2018/12/23 15:50

aikon_marimo

総合スコア1083

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問