phpファイルでコメントアウト(/* */)すると、ブラウザで見た際にソースが表示されてしまう。
phpで問い合わせフォームを作る練習をしているのですが、下記のソースをサーバにアップしてブラウザで表示したところ、ソースがそのまま表示されてしまいます。
ファイル名は、contact.phpとしています。
html
1<?php 2if($_SERVER['REQUEST_METHOD']==='POST'){ 3 4 //バリデーション 5 $inquiry = $_POST['inquiry']; 6 $name = $_POST['name']; 7 $email = $_POST['email']; 8 $error = array(); 9 10 if (empty($inquiry)){ 11 $error['inquiry']='必ずご記入ください'; 12 } 13 14 if (empty($name)){ 15 $error['name']='必ずご記入ください'; 16 } 17 18 if (!filter_var($email, FILTER_VALIDATE_EMAIL)){ 19 $error['email']='メールアドレスの形式が正しくありません。'; 20 } 21 22 if (empty($error)){ 23 header('Location:thanks.php'); 24 exit; 25 } 26} 27 28/* htmlの特殊文字をエスケープ */ 29 function h($str){ 30 return htmlspecialchars($str, ENT_QUOTES, 'UTF-8'); 31 } 32 33?> 34 35 36<!DOCTYPE html> 37<html lang="ja"> 38<head> 39 <meta charset="UTF-8"> 40 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 41 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 42 <title>FORM PHP</title> 43</head> 44<body> 45<h1>問い合わせフォーム</h1> 46<form action="" method="post"> 47 <p>■お名前 ※必須</p> 48 <?php if(isset($error['name'])) echo h($error['name']); ?> 49 <input type="text" name="name" id="" value=""> 50 51 <p>■E-mail ※必須</p> 52 <?php if(isset($error['email'])) echo h($error['email']); ?> 53 <input type="email" name="email" id="" value=""> 54 55 <p>■問い合わせ内容 ※必須</p> 56 <?php if(isset($error['inquiry'])) echo h($error['inquiry']); ?> 57 <textarea name="inquiry" id="" cols="100" rows="10"></textarea> 58 59 <button type="submit">送信</button> 60 61</form> 62</body> 63</html>
をアップすると、
php
1<?php 2if($_SERVER['REQUEST_METHOD']==='POST'){ 3 4 //繝舌Μ繝��繧キ繝ァ繝ウ 5 $inquiry = $_POST['inquiry']; 6 $name = $_POST['name']; 7 $email = $_POST['email']; 8 $error = array(); 9 10 if (empty($inquiry)){ 11 $error['inquiry']='蠢�★縺碑ィ伜�縺上□縺輔>'�� 12 } 13 14 if (empty($name)){ 15 $error['name']='蠢�★縺碑ィ伜�縺上□縺輔>'�� 16 } 17 18 if (!filter_var($email, FILTER_VALIDATE_EMAIL)){ 19 $error['email']='繝。繝シ繝ォ繧「繝峨Ξ繧ケ縺ョ蠖「蠑上′豁」縺励¥縺ゅj縺セ縺帙s縲�'�� 20 } 21 22 if (empty($error)){ 23 header('Location:thanks.php'); 24 exit; 25 } 26} 27 28/* html縺ョ迚ケ谿頑枚蟄励r繧ィ繧ケ繧ア繝シ繝� */ 29 function h($str){ 30 return htmlspecialchars($str, ENT_QUOTES, 'UTF-8'); 31 } 32 33?> 34 35 36<!DOCTYPE html> 37<html lang="ja"> 38<head> 39 <meta charset="UTF-8"> 40 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 41 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 42 <title>FORM PHP</title> 43</head> 44<body> 45<h1>蝠上>蜷医o縺帙ヵ繧ゥ繝シ繝�</h1> 46<form action="" method="post"> 47 <p>笆�縺雁錐蜑阪窶サ蠢���</p> 48 <?php if(isset($error['name'])) echo h($error['name']); ?> 49 <input type="text" name="name" id="" value=""> 50 51 <p>笆�E-mail縲窶サ蠢���</p> 52 <?php if(isset($error['email'])) echo h($error['email']); ?> 53 <input type="email" name="email" id="" value=""> 54 55 <p>笆�蝠上>蜷医o縺帛�螳ケ縲窶サ蠢���</p> 56 <?php if(isset($error['inquiry'])) echo h($error['inquiry']); ?> 57 <textarea name="inquiry" id="" cols="100" rows="10"></textarea> 58 59 <button type="submit">騾∽ソ。</button> 60 61</form> 62</body> 63</html> 64
とブラウザ側で表示されます。
/* htmlの特殊文字をエスケープ */ のコメントアウト部分を、
// のコメントアウトに変更すると、ソースでなくちゃんとフォーム画面が表示されます。
/* ~ */ も、PHP内でのコメントアウトで使用できるはずと思っていたのですが、原因としてはどんなことが考えられるでしょうか。
ちなみにサーバはエックスサーバーの、XFREEのサーバを使用しています。
どうぞよろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー