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

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

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

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

HTML

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

Q&A

解決済

2回答

323閲覧

アンケートフォームのバリデーションチェックについて

penginer

総合スコア32

PHP

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

HTML

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

0グッド

0クリップ

投稿2017/08/12 08:06

###前提・実現したいこと
Atomを用いてPHPとHTMLを使ったアンケートフォームを作っており、
「アンケートと同じページでエラーチェックを行い、
エラーはその場に表示する」
というシステムを作っているところですが、
エラーチェックをする以前の問題で
PHPのソースコードの一部が
ページ中に出てきてしまいました。

###発生している問題・エラーメッセージ
PHPのみのソース中にある、
/**/でコメントアウトした部分が
全てHTML中に出てきました。

###該当のソースコード

PHP

1 2<?php 3$errors = array(); 4session_start(); 5$gender = ['gender']; 6$attribute = ['attribute']; 7$attribute_custom = ['attribute_custom']; 8$age10 = ['age10']; 9$age1 = ['age1']; 10$like = ['like']; 11if(isset($_POST['submit']) && $_POST['submit'] ==="確認する"){ 12 13if($gender === ""){ 14 $errors['gender'] = "性別が入力されていません。"; 15} elseif (($gender !=="m")&&($gender !=="f")&&($gender !=="X")) { 16$errors['gender'] = "不正なPOSTです。"; 17} 18 19if($attribute === ""){ 20 $errors['attribute'] = "属性が入力されていません。"; 21} 22elseif (htmlspecialchars(ctype_digit(strval($attribute)),ENT_QUOTES) == false) { 23 $errors['attribute'] = "不正なPOSTです。"; 24} 25 26elseif (intval($attribute) > /*21){ 27$errors['attribute'] = "不正なPOSTです。"; 28} 29 30if(($attribute_custom == "") && (intval($attribute) == 21)){ 31 $errors['attribute_custom'] = "属性が入力されていません。"; 32} 33 if (preg_replace( "/^( \n)|( \n)$/", "", $attribute_custom) == false) { 34$errors['attribute_custom'] = "属性が入力されていません。"; 35} 36else 37 { 38$attribute_custom = htmlspecialchars(($attribute_custom),ENT_QUOTES); 39} 40 41 42 43if($age10 === ""){ 44 $errors['age10'] = "年齢(10の位)が入力されていません。"; 45} 46 elseif (htmlspecialchars(ctype_digit(strval($age10)),ENT_QUOTES) == false) { 47 $errors['age10'] = "不正なPOSTです。"; 48} 49 50 elseif (intval($age10) > 10) { 51 $errors['age10'] = "不正なPOSTです。"; 52} 53 54if($age1 === ""){ 55 $errors['age1'] = "年齢(1の位)が入力されていません。"; 56} 57else if (htmlspecialchars(ctype_digit(strval($age1)),ENT_QUOTES) == false) { 58 $errors['age1'] = "不正なPOSTです。"; 59} 60 61else if (intval($age1) > 9) { 62 $errors['age1'] = "不正なPOSTです。"; 63} 64 65if($like === ""){ 66 $errors['like'] = "○○が入力されていません。"; 67} 68 elseif (htmlspecialchars(ctype_digit(strval($like)),ENT_QUOTES) == false) { 69 $errors['like'] = "不正なPOSTです。"; 70} 71 72 elseif (intval($like) > 5) { 73 $errors['like'] = "不正なPOSTです。"; 74} 75} 76 77 $_SESSION = $_POST; 78 header('Location: ./check-att.php'); 79 exit; 80} 81 82?>*/

↓HTML+PHP

性別 <input type="radio" name="gender" value="m" id="m"><label for="m">男性</label> <input type="radio" name="gender" value="f" id="f"><label for="f">女性</label> <input type="radio" name="gender" value="X" id="X"><label for="X">その他</label> <?php echo $errors['gender']; ?> 属性 <input type="checkbox" name="attribute" value="1" id="1"><label for="1">1</label><br><br> <input type="checkbox" name="attribute" value="2" id="2"><label for="2">2</label><br><br> <input type="checkbox" name="attribute" value="3" id="3"><label for="3">3</label><br><br> //同じようなコード <input type="checkbox" name="attribute" value="21" id="21"><label for="21">21</label><br><br> <input type="checkbox" name="attribute" value="22" id="other"><label for="other">その他</label><br><br> <input type="text" name="attribute" placeholder="カスタム" value="" id="attribute-custom"> <?php echo $errors['attribute']; echo $errors['attribute_custom']; ?> 年齢 <select name="age10" required> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> <option value="10">10</option> </select> <select name="age1" required> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option></select><br> <?php echo $errors['age10']; echo $errors['age1']; ?> <input type="radio" name="like" value="0"><label>0</label> <input type="radio" name="like" value="1"><label>1</label> <input type="radio" name="like" value="2"><label>2</label><br> <input type="radio" name="like" value="3"><label>3</label> <input type="radio" name="like" value="4"><label>4</label> <input type="radio" name="like" value="5"><label>5</label></p> <?php echo $errors['like']; ?>

###試したこと
Linterで確認したところエラーが見当たらず、
一通りミスを探したものの自分では分かりませんでした。

###補足情報(言語/FW/ツール等のバージョンなど)
ツール:Atom 1.18.0
Linter-phpのバージョン:1.3.2

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

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

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

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

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

guest

回答2

0

ファイルを php として解釈していません。
拡張子を html 等にしていませんか?

参考:
ブラウザの解釈【<? php】は【<!--? php】となぜ変換されるか?

こちらで、ファイルの拡張子を html としたところ、現象は再現しました。

投稿2017/08/12 08:20

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

penginer

2017/08/12 08:32

HTML文書も一緒ですが、 拡張子は確かにphpです。
退会済みユーザー

退会済みユーザー

2017/08/12 08:46

現象を確認してほしいのですが、response が <?php から始まって、?> で終わる(つまりファイルのソース全部)になっていると思います。 response の確認の仕方が分からなければ、ブラウザのソースを見てください。 全文が表示されていると思います。 これは、web サーバが php を php として解釈せず、ソース全部を送り出しているから発生する現象です。 一般的には拡張子が原因ですが、そうでないのであれば、web サーバの設定に問題があると考えられます。
guest

0

ベストアンサー

コメントアウトの位置や、PHPの開始タグ、終了タグの対応、波括弧の対応がとれていないからではないでしょうか?

HTML

1<?php 2$errors = array(); 3session_start(); 4$gender = ['gender']; 5$attribute = ['attribute']; 6$attribute_custom = ['attribute_custom']; 7$age10 = ['age10']; 8$age1 = ['age1']; 9$like = ['like']; 10if (isset($_POST['submit']) && $_POST['submit'] === "確認する") { 11 12 if ($gender === "") { 13 $errors['gender'] = "性別が入力されていません。"; 14 } elseif (($gender !== "m") && ($gender !== "f") && ($gender !== "X")) { 15 $errors['gender'] = "不正なPOSTです。"; 16 } 17 18 if ($attribute === "") { 19 $errors['attribute'] = "属性が入力されていません。"; 20 } elseif (htmlspecialchars(ctype_digit(strval($attribute)), ENT_QUOTES) == false) { 21 $errors['attribute'] = "不正なPOSTです。"; 22 }/* elseif (intval($attribute) > 21){ 23$errors['attribute'] = "不正なPOSTです。"; 24} 25 26if(($attribute_custom == "") && (intval($attribute) == 21)){ 27 $errors['attribute_custom'] = "属性が入力されていません。"; 28} 29 if (preg_replace( "/^( \n)|( \n)$/", "", $attribute_custom) == false) { 30$errors['attribute_custom'] = "属性が入力されていません。"; 31} 32else 33 { 34$attribute_custom = htmlspecialchars(($attribute_custom),ENT_QUOTES); 35} 36 37 38 39if($age10 === ""){ 40 $errors['age10'] = "年齢(10の位)が入力されていません。"; 41} 42 elseif (htmlspecialchars(ctype_digit(strval($age10)),ENT_QUOTES) == false) { 43 $errors['age10'] = "不正なPOSTです。"; 44} 45 46 elseif (intval($age10) > 10) { 47 $errors['age10'] = "不正なPOSTです。"; 48} 49 50if($age1 === ""){ 51 $errors['age1'] = "年齢(1の位)が入力されていません。"; 52} 53else if (htmlspecialchars(ctype_digit(strval($age1)),ENT_QUOTES) == false) { 54 $errors['age1'] = "不正なPOSTです。"; 55} 56 57else if (intval($age1) > 9) { 58 $errors['age1'] = "不正なPOSTです。"; 59} 60 61if($like === ""){ 62 $errors['like'] = "○○が入力されていません。"; 63} 64 elseif (htmlspecialchars(ctype_digit(strval($like)),ENT_QUOTES) == false) { 65 $errors['like'] = "不正なPOSTです。"; 66} 67 68 elseif (intval($like) > 5) { 69 $errors['like'] = "不正なPOSTです。"; 70} 71} 72 73 $_SESSION = $_POST; 74 header('Location: ./check-att.php'); 75 exit; 76} 77*/ 78} 79?> 80<!DOCTYPE html> 81<html lang="ja"> 82<head> 83 <meta charset="UTF-8"> 84 <title>タイトル</title> 85</head> 86<body> 87性別 88<input type="radio" name="gender" value="m" id="m"><label for="m">男性</label> 89<input type="radio" name="gender" value="f" id="f"><label for="f">女性</label> 90<input type="radio" name="gender" value="X" id="X"><label for="X">その他</label> 91<?php 92 93echo $errors['gender']; 94 95?> 96 97属性 98<input type="checkbox" name="attribute" value="1" id="1"><label for="1">1</label><br><br> 99<input type="checkbox" name="attribute" value="2" id="2"><label for="2">2</label><br><br> 100<input type="checkbox" name="attribute" value="3" id="3"><label for="3">3</label><br><br> 101//同じようなコード 102<input type="checkbox" name="attribute" value="21" id="21"><label for="21">21</label><br><br> 103<input type="checkbox" name="attribute" value="22" id="other"><label for="other">その他</label><br><br> 104<input type="text" name="attribute" placeholder="カスタム" value="" id="attribute-custom"> 105<?php 106 107echo $errors['attribute']; 108echo $errors['attribute_custom']; 109 110?> 111 112年齢 113<select name="age10" required> 114 <option value="0">0</option> 115 <option value="1">1</option> 116 <option value="2">2</option> 117 <option value="3">3</option> 118 <option value="4">4</option> 119 <option value="5">5</option> 120 <option value="6">6</option> 121 <option value="7">7</option> 122 <option value="8">8</option> 123 <option value="9">9</option> 124 <option value="10">10</option> 125</select> 126 127<select name="age1" required> 128 <option value="0">0</option> 129 <option value="1">1</option> 130 <option value="2">2</option> 131 <option value="3">3</option> 132 <option value="4">4</option> 133 <option value="5">5</option> 134 <option value="6">6</option> 135 <option value="7">7</option> 136 <option value="8">8</option> 137 <option value="9">9</option> 138</select><br> 139<?php 140echo $errors['age10']; 141echo $errors['age1']; 142?> 143 144<input type="radio" name="like" value="0"><label>0</label> 145<input type="radio" name="like" value="1"><label>1</label> 146<input type="radio" name="like" value="2"><label>2</label><br> 147<input type="radio" name="like" value="3"><label>3</label> 148<input type="radio" name="like" value="4"><label>4</label> 149<input type="radio" name="like" value="5"><label>5</label></p> 150<?php 151echo $errors['like']; 152?> 153</body> 154</html> 155

追記

HTML

1<?php 2$errors = array(); 3session_start(); 4 5$gender = ["gender"]; 6$attribute = ["attribute"]; 7$attribute_custom = ["attribute_custom"]; 8$age10 = ["age10"]; 9$age1 = ["age1"]; 10$like = ["like"]; 11 12if (isset($_POST["submit"]) && $_POST["submit"] === "確認する") { 13 14 if ($gender === "") { 15 $errors["gender"] = "性別が入力されていません。"; 16 } elseif (($gender !== "m") && ($gender !== "f") && ($gender !== "X")) { 17 $errors["gender"] = "不正なPOSTです。"; 18 } 19 20 if ($attribute === "") { 21 $errors["attribute"] = "属性が入力されていません。"; 22 } elseif (htmlspecialchars(ctype_digit(strval($attribute)), ENT_QUOTES) == false) { 23 $errors["attribute"] = "不正なPOSTです。"; 24 } elseif (intval($attribute) > 21) { 25 $errors["attribute"] = "不正なPOSTです。"; 26 } 27 28 if (($attribute_custom == "") && (intval($attribute) == 21)) { 29 $errors["attribute_custom"] = "属性が入力されていません。"; 30 } 31 if (preg_replace("/^( \n)|( \n)$/", "", $attribute_custom) == false) { 32 $errors["attribute_custom"] = "属性が入力されていません。"; 33 } else { 34 $attribute_custom = htmlspecialchars(($attribute_custom), ENT_QUOTES); 35 } 36 37 38 if ($age10 === "") { 39 $errors["age10"] = "年齢(10の位)が入力されていません。"; 40 } elseif (htmlspecialchars(ctype_digit(strval($age10)), ENT_QUOTES) == false) { 41 $errors["age10"] = "不正なPOSTです。"; 42 } elseif (intval($age10) > 10) { 43 $errors["age10"] = "不正なPOSTです。"; 44 } 45 46 if ($age1 === "") { 47 $errors["age1"] = "年齢(1の位)が入力されていません。"; 48 } else { 49 if (htmlspecialchars(ctype_digit(strval($age1)), ENT_QUOTES) == false) { 50 $errors["age1"] = "不正なPOSTです。"; 51 } else { 52 if (intval($age1) > 9) { 53 $errors["age1"] = "不正なPOSTです。"; 54 } 55 } 56 } 57 58 if ($like === "") { 59 $errors["like"] = "○○が入力されていません。"; 60 } elseif (htmlspecialchars(ctype_digit(strval($like)), ENT_QUOTES) == false) { 61 $errors["like"] = "不正なPOSTです。"; 62 } elseif (intval($like) > 5) { 63 $errors["like"] = "不正なPOSTです。"; 64 } 65 66 if (empty($errors)) { 67 $_SESSION = $_POST; 68 header("Location: ./check-att.php"); 69 exit(); 70 } 71} 72 73?> 74<!DOCTYPE html> 75<html lang="ja"> 76<head> 77 <meta charset="UTF-8"> 78 <title>タイトル</title> 79</head> 80<body> 81性別 82<input type="radio" name="gender" value="m" id="m"><label for="m">男性</label> 83<input type="radio" name="gender" value="f" id="f"><label for="f">女性</label> 84<input type="radio" name="gender" value="X" id="X"><label for="X">その他</label> 85<?php 86 87echo $errors["gender"]; 88 89?> 90 91属性 92<input type="checkbox" name="attribute" value="1" id="1"><label for="1">1</label><br><br> 93<input type="checkbox" name="attribute" value="2" id="2"><label for="2">2</label><br><br> 94<input type="checkbox" name="attribute" value="3" id="3"><label for="3">3</label><br><br> 95//同じようなコード 96<input type="checkbox" name="attribute" value="21" id="21"><label for="21">21</label><br><br> 97<input type="checkbox" name="attribute" value="22" id="other"><label for="other">その他</label><br><br> 98<input type="text" name="attribute" placeholder="カスタム" value="" id="attribute-custom"> 99<?php 100 101echo $errors["attribute"]; 102echo $errors["attribute_custom"]; 103 104?> 105 106年齢 107<select name="age10" required> 108 <option value="0">0</option> 109 <option value="1">1</option> 110 <option value="2">2</option> 111 <option value="3">3</option> 112 <option value="4">4</option> 113 <option value="5">5</option> 114 <option value="6">6</option> 115 <option value="7">7</option> 116 <option value="8">8</option> 117 <option value="9">9</option> 118 <option value="10">10</option> 119</select> 120 121<select name="age1" required> 122 <option value="0">0</option> 123 <option value="1">1</option> 124 <option value="2">2</option> 125 <option value="3">3</option> 126 <option value="4">4</option> 127 <option value="5">5</option> 128 <option value="6">6</option> 129 <option value="7">7</option> 130 <option value="8">8</option> 131 <option value="9">9</option> 132</select><br> 133<?php 134echo $errors["age10"]; 135echo $errors["age1"]; 136?> 137 138<input type="radio" name="like" value="0"><label>0</label> 139<input type="radio" name="like" value="1"><label>1</label> 140<input type="radio" name="like" value="2"><label>2</label><br> 141<input type="radio" name="like" value="3"><label>3</label> 142<input type="radio" name="like" value="4"><label>4</label> 143<input type="radio" name="like" value="5"><label>5</label></p> 144<?php 145echo $errors["like"]; 146?> 147</body> 148</html>

投稿2017/08/12 08:12

編集2017/08/12 08:48
s8_chu

総合スコア14731

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

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

penginer

2017/08/12 08:18

説明ベタで申し訳ございません。 さっき言ったコメントアウトの部分 (/**/)は ソースとして実行したいという意味です。
s8_chu

2017/08/12 08:20

> さっき言ったコメントアウトの部分 (/**/)はソースとして実行したいという意味です。 よくわからないのですが、コメントアウトの部分を実行したいならばコメントアウトを外せば良いのでは?
penginer

2017/08/12 08:33

先程のコメントアウトの部分は 「実際はソースとして実行されるはずなのに HTML文書に出てきている」という意味です。 何でくくるべきか迷った挙句 このように書いてしまいました。 誤解を招いてしまい申し訳ございません。
s8_chu

2017/08/12 08:38

なるほど、理解しました。 質問ばかりですみませんが、コメントアウトされていた部分の以下のコードは何を目的として書いたのでしょうか? ``` $_SESSION = $_POST; header('Location: ./check-att.php'); exit(); ```
penginer

2017/08/12 08:44

ポストをセッションにし、 またエラーが無ければ 確認ページにリダイレクトする。 という意味で書きました
s8_chu

2017/08/12 08:49

ありがとうございます。追記しました。
退会済みユーザー

退会済みユーザー

2017/08/12 09:23

この現象ってスクリプトさわって解決する問題じゃないはずなんだけど。。。 どうやって解決したんだろ^^;
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問