なぜエラーが出るのか分からない(PHP)

このQ&Aのポイント
  • check.phpファイルの最終行でエラーが表示される
  • 質問内容は、index.htmlのフォームに入力し、check.phpに送信する際にエラーが表示されることです
  • エラーが表示される原因は、入力されたデータが正しく受け取れていないためです
回答を見る
  • ベストアンサー

なぜエラーが出るのか分からない(PHP)

●質問の主旨 check.phpファイルの最終行(</html>のところ)で Parse error: syntax error, unexpected end of file としてエラーが表示されます。 なぜエラー表示されるのでしょうか?ご存知の方ご教示願います。 (eclipseでもエラー表示されているのは分かりますが、 何がエラーなのか分かりません) ●状況 1.index.htmlのフォームに入力し、送信ボタンを押す (添付画像) 2.check.phpに飛ばす 3.飛ばすとエラーが表示される ●環境 windows8 xammp1.8.1 ●コード (index.html) <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>PHPの基礎</title> </head> <body> <form method="post" action="check.php"> ニックネームを入力してください<br/> <input name="nickname" type="text" style="width:100px"><br/> メールアドレスを入力してください<br/> <input name="email" type="text" style="width:200px"><br/> ご意見を入力してください<br/> <input name="goiken" type="text" style="width:300px"><br/> <br/> <input type="submit" value="送信"> </form> </body> </html> (check.php) <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>PHPの基礎</title> </head> <body> <?php $nickname = $_POST['nickname']; $email = $_POST['email']; $goiken = $_POST['goiken']; if($nickname =='') { print'ニックネームが入力されてません'; } else { print'ようこそ!'; print $nickname; print'様'; print'<br/>'; } if($email =='') { print'emailが入力されてません'; } else { print'ようこそ!'; print $email; print'<br/>'; if($goiken =='') { print'ご意見が入力されてません'; } else { print'ご意見'; print $goiken; print'』<br/>'; } ?> </body> </html>

  • PHP
  • 回答数4
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
noname#219209
noname#219209
回答No.2

syntax error は文法や構文にミスがあるときにでます。 「{}」の数があってなかったり、「;」が抜けてたりとか・・・・ で、 if($email =='') { print'emailが入力されてません'; } else { print'ようこそ!'; print $email; print'<br/>'; のあとに閉じ}がないようです。

その他の回答 (3)

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.4

この質問に対しての回答は2の人ので正解だと思います。 Eclipse使い始めたようなので、ちょっとアドバイス。 2の人も言ってるような、セミコロン忘れとかは、エラーの出てる行じゃなくて、次の行に出たりするので要注意。 括弧の閉じ忘れは 最終的に数が合わないってことで 一番最後に「エラーだよん」ってのが出る。 んで、カーソルを括弧とかに合わせると、それと対になる閉じ括弧にマークがつく。 そのマークが分かりづらいのがアレだけど。 あと CTRL+SHIFT+F で 自動でインデント入れてくれるので、if とかがネストした時に分かりやすくなる。 ただ、エラーが有るとやってくんない。 あと、1の人のに関しては、3の人の言ってることが正しいけど、言い方が良くないとは思う。 正直、俺はHTML5になってからついていけてない。

dradra33
質問者

お礼

bm_hiroさま ご回答ありがとうございます。 ご指摘のように、 回答NO.2で意図通り動かすことができました。

回答No.3

<br>はhtml <br/>はxhtml での書き方。 で、今回のは <!DOCTYPE html> と宣言していることからhtml5となる。 html5においては<br>の書き方が正しい。

dradra33
質問者

お礼

don_donto_koiさま ご回答ありがとうございます。 回答NO.2で意図通り動かすことができました。

回答No.1

<br>が<br/>というのが分からないのですが、 そういう風に書くものなんでしょうか?

dradra33
質問者

お礼

ys_captainさま ご回答ありがとうございます。 回答NO.2で意図通り動かすことができました。

関連するQ&A

  • PHPについて教えてください

    以下のコードでthanks.phpにemailとgoikenが表示されません なぜでしょうか? おそらくthanks.phpが間違えてると思いますが見直してもわかりません index.html <DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>PHP基礎</title> </head> <body> <form method="POST" action="check.php"> ニックネームを入力してください<br> <input name="nickname" type="text" style="width:100px"><br> メールアドレスを入力してください<br> <input name="email" type="text" style="width:200px"><br> ご意見を一言でお聞かせください<br> <input name="goiken" type="text" style="width:300px"><br> <input type="submit" value="送信"> </form> </body> </html> check.php <DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>PHP基礎</title> </head> <body> <?php $nickname=$_POST['nickname']; $email=$_POST['email']; $goiken=$_POST['goiken']; if ($nickname==''){ print'ニックネームが入力されていません<br>'; } else { print'ようこそ'; print $nickname; print' 様'; print'<br>'; } if ($email==''){ print'メールアドレスが入力されていません<br>'; } else { print'メールアドレス:'; print $email; print'<br>'; } if ($goiken==''){ print'ご意見が入力されていません<br>'; } else { print'ご意見『'; print $goiken; print'』<br>'; } if($nickname=='' || $email='' || $goiken=''){ print'<form>'; print'<input type="button" onclick="history.back()" value="戻る">'; print'</form>'; } else { print'<form method="post" action="thanks.php">'; print'<input name="nickname" type="hidden" value="'.$nickname.'">'; print'<input name="email" type="hidden" value="'.$email.'">'; print'<input name="goiken" type="hidden" value="'.$goiken.'">'; print'<input type="button" onclick="history.back()" value="戻る">'; print'<input type="submit" value="OK">'; print'</form>'; } ?> </body> </html> thanks.php <DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>PHP基礎</title> </head> <body> <?php $nickname=$_POST['nickname']; $email=$_POST['email']; $goiken=$_POST['goiken']; print $nickname; print'様<br>'; print'ご意見ありがとうございました<br>'; print'頂いたご意見『'; print $goiken; print '』<br>'; print $email; print'宛にメールを送信しました'; ?> </body> </html>

    • ベストアンサー
    • PHP
  • コードの何が間違っているのか分からない(PHP)

    ●質問の主旨 コードの何が間違っているのかよくわからない。 (check.php)のファイルで、 print'<input type="hidden" name="nickname" value="'$nickname.'">'; の行がsyntaxerrorとして、返されるがなぜそうなるのか分からない (マニュアル本に記述して、スペルミスもチェックしているのですが) 何かお気づきのかた、ご教示願います。 ●質問の補足 添付の画像のように名前、メールアドレス、ご意見を入力してもらう フォームをとして作りました(index.html) すべてのフォームに入力がされているかどうかチェックし、 (check.php) サンクスページを返すようにしました (thanks.php) ●環境 Windows8 XAMMP(ローカル開発環境) ●コード (index.html) <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>PHPの基礎</title> </head> <body> <form method="post" action="check.php"> <p>あなたの名前を入力してください</p> <input name="nickname" type="text" style="width:100px"> <p>メールアドレスを入力してください</p> <input name="email" type="text" style="width:200px"> <p>ご意見をお聞かせください</p> <input name="goiken" type="text" style="width:300px"><br/> <input type="submit" value="送信"> </form> </body> </html> (check.php) <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>PHPの基礎</title> </head> <body> <?php $nickname = $_POST['nickname']; $email = $_POST['email']; $goiken = $_POST['goiken']; $nickname = htmlspecialchars($nickname); $email = htmlspecialchars($email); $goiken = htmlspecialchars($goiken); if ($nickname == '') { print '名前が入力されてません!<br/>'; } else { print 'ようこそ!'; print $nickname; print 'さま'; print '<br/>'; } if ($email == '') { print 'emailが入力されてません!<br/>'; } else { print 'メールアドレス'; print $email; print '<br/>'; } if ($goiken == '') { print 'ご意見が入力されてません!<br/>'; } else { print 'ご意見'; print $goiken; print '<br/>'; } if($nickname == '' || $email == '' || $goiken == '') { print'<form>'; print'<input type="button" onclick="history.back()" value="戻る">'; print'</form>'; } else { print'<form method="post" action="thanks.php">';   print'<input type="hidden" name="nickname" value="'$nickname.'">'; print'<input type="hidden" name="email" value="'.$email.'">'; print'<input type="hidden" name="goiken" value="'.$goiken.'">'; print'<input type="button" onclick="history.back()" value="戻る">'; print'<input type="submit" value="OK!">'; print'</form>'; } ?> </body> </html> (thanks.php) <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>PHPの基礎</title> </head> <body> <?php $nickname=$_POST['nickname']; $email=$_POST['email']; $goiken=$_POST['goiken']; print 'ご意見ありがとうございました!'; print $nickname; print '様<br/>'; print 'ご意見ありがとうございました<br/>'; print '頂いたご意見『'; print $goiken; print '』<br/>'; print $email; ?> </body> </html>

    • ベストアンサー
    • PHP
  • PHPコードの間違いを指摘してください

    以下2つのPHPコードの間違いを指摘してください <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>PHP基礎</title> </head> <body> <?php $nickname=$_POST['nickname']; $email=$_POST['email']; $goiken=$_POST['goiken']; if($nickname=='') { print 'ニックネームが入力されていません。<br />'; } else { print 'ようこそ'; print $nickname; print '様'; print '<br />'; } if($email=='') { print 'メールアドレスが入力されていません。<br />'; } else { print 'メールアドレス:'; print $email; print '<br />'; } if($goiken=='') { print 'ご意見が入力されていません。<br />'; } else { print 'ご意見『'; print $goiken; print'』<br />'; } if($nickname==''||$email=''||$goiken='') { print '<form>'; print '<input type="button" onclick="history.back()" value="戻る">'; print '</form>'; } else { print '<form method="post" action="thanks.php">'; print '<input name="nickname" type="hidden" value="'.$nickname.'">'; print '<input name="email" type="hidden" value="'.$email.'">'; print '<input name="goiken" type="hidden" value="'.$goiken.'">'; print '<input type="button" onclick="history.back()" value="戻る">'; print '<input type="submit" value="OK">'; print '</form>'; } ?> </body> </html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>PHP基礎</title> </head> <body> <?php $nickname=$_POST['nickname']; $email=$_POST['email']; $goiken=$_POST['goiken']; print $nickname; print '様<br />'; print 'ご意見ありがとうございました。'; print '頂いたご意見『'; print $goiken; print '』<br />'; print $email; print 'にメールを送りましたのでご確認ください。'; ?> </body> </html>

    • 締切済み
    • PHP
  • phpを挑戦している中でのエラーメッセージについて

    初期の学び中の者です。 Parse error: syntax error, unexpected T_STRING in C:\xampp\htdocs\check.php on line 51 とでるのですが、何回みなおしてもエラーを見つけることができません。 line 51、というのは下記のです。(50行に余分の「’」が入っていたのですが、それを修正しましたが、51にあるメッセージです)。 print'<input type="button" onclick="history.back()" value="戻る">'; よろしくお願いいたします。 -------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>PHP基礎</title> </head> <body> <?php $nickname=$_POST['nickname']; $email=$_POST['email']; $goiken=$_POST['goiken']; if($nickname=='') { print'ニックネームが入力されていません。<br />'; } else { print'ようこそ'; print $nickname; print'様'; print'<br />'; } if($email=='') { print'メールアドレスが入力されていません。<br />'; } else { print'メールアドレス'; print $email; print'<br />'; } if($goiken=='') { print'ご意見がが入力されていません。<br />'; } else { print'ご意見'; print $goiken; print'<br />'; } if($nickname==" || $email==" || $goiken==") { print'<form>'; print'<input type="button" onclick="history.back()" value="戻る">'; print'</form>'; } else { print'<form method="post" action="thanks.php">'; print'<input type="button" onclick="history.back()" value="戻る">'; print'<input type="submit" value="OK">'; print'</form>'; } ?> </body> </html> --------

  • エラーメッセージについて

    Parse error: syntax error, unexpected $end in C:\xampp\htdocs\check.php on line 25 とでますが、line 25(一番下の行)が間違っていると言われ、プログラムさえ書いていません。 PHPを学ぶチャレンジをしている最中です。下記のように書きました。 -------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>PHP基礎</title> </head> <body> <?php $nickname=$_POST['nickname']; if($nickname==") { print'ニックネームが入力されていません'; } else { print'ようこそ'; print $nickname; print'様'; } ?> </body> </html> -------- この下が line 25 です。 よろしくお願いいたします。

  • PHPについて教えてください

    下記のindex.htmlとcheck.phpを別々にURLに入力すると正しく表示されるのですが 横の送信ボタンを押したときにcheck.phpにジャンプしてくれません どうしてでしょうか? index.html <DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>PHP基礎</title> </head> <body> <from method="post" action="check.php"> <input name="nickname" type="text" style="width:100px"> <input type="submit" value="送信"> </from> </body> </html> check.php <DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>PHP基礎</title> </head> <body> <?php print'ようこそ'; ?> </body> </html>

    • 締切済み
    • PHP
  • phpの間違いが解りません!!!!!!!

    PHP初心者です。 現在テキストを参考にお問い合わせフォームを制作しているのですが いくら見直してもHTMLの画像部分は表示されるのですが、 PHP部分が表示されません!! php自体が間違ってると真っ白になると思うのですが… 点線で囲った中央部分だけだと問題なく表示されますが、 データーベースへ送るという上と下の部分を追加すると表示がなくなります。 ご指摘頂けると嬉しいです。 よろしくお願いします。 <?php $dsh='mysqul:dbname=(※データベース名);host=(※ホスト名)'; $user='(※ユーザー名)'; $password='(※パスワード)'; $dbh=new PDO($dsn,$user,$password); $dbh->query('SET NAMES UTF-8'); ーーーーーーーーーー真ん中の部分だけだと問題なく表示されます。ーーー $nickname=$_POST['nickname']; $email=$_POST['email']; $naiyou=$_POST['naiyou']; print $nickname; print'様<br/>'; print'お問い合わせありがとうございました。<br/>'; print'お問い合わせ内容【'; print $naiyou; print'】<br/>'; print $email; print'に確認のメールを送りましたのでご確認ください。'; $mail_sub='メールが送信されました。'; $mail_body=$nickname."様へアンケートありがとうございました。"; $mail_body=html_entity_decode($mail_body,ENT_QUOTES,"UTF-8"); $mail_head='From:××××××@××××.com'; mb_language('japanese'); mb_internal_encoding("UTF-8"); mb_send_mail($email,$mail_sub,$mail_body,$mail_head); ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー $sql='INSERT INTO syusyoku(nickname,email,naiyou)VALUES("'.$nickname.'","'.$email.'","'.$naiyou.'")'; $stmt=$dbh->prepare($sql); $stmt->execute(); $dbh=null; ?> ※部分は伏せていますが、おそらくあってると思います… よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPでエラーを元の画面にかえすには

    エラーメッセージを次の画面に行かずに 新規登録ボタンを押したら エラー表示を入力している画面に 表示するにはどうしたら出来ますか? javascriptは触れたことがないので使いたくないです ありましたら簡単なサンプルも教えて下さい 下記は入力フォームです <html> <head><title>新規登録</title></head> <body> <blockquote> <form action = "insert.php" method = "POST"> <br><br>登録画面<br><br> すべての項目入力してください<br> 番号<input type="number" name = "ID"> (一覧画面にない番号を入力してください) <br> <br>氏名<input type="text" size = "50" name = "NAME"><br><br> 住所<input type="text" size = "130" name = "ADDR"><br><br> <input type = "submit" value = "登録する" style ="font-size:20px; width: 100px; height: 40px"> <a href="http://localhost/top.php"> <input type = "button" value = "一覧に戻る" style ="font-size:20px; width: 100px; height: 40px"></A> </body> </blockquote> </form> </body> </html> 空白だったら入力フォームにエラー表示し再度ユーザに入力させたい

    • ベストアンサー
    • PHP
  • php $_SESSIONで値が消える。

    いつもお世話になり誠にありがとうございます。 標記の件。 インプット画面ー>確認画面ー>戻るー>インプット画面 インプット画面に戻った時、どうしても最初のインプット画面で打った内容が消えてしまいます。 プログラムを診て、誤りを指摘して頂けないでしょうか? どうぞよろしくお願い致します。           記 <?php session_start(); $mode = 'input'; if( isset($_POST['back']) && $_POST['back'] ){ //何もしない } else if( isset($_POST['confirm']) && $_POST['confirm'] ){ $_SESSION['name'] = $_POST['name']; $_SESSION['email'] = $_POST['email']; $_SESSION['category']= $_POST['category']; $_SESSION['message'] = $_POST['message']; $mode = 'confirm'; } else if( isset($_POST['send']) && $_POST['send'] ){ $mode = 'send'; } else { $_SESSION['name'] =""; $_SESSION['email'] =""; $_SESSION['category']=""; $_SESSION['message'] =""; } ?> <!DOCTYPE html> <html lang="ja"> <head> </head> <body> <div class="v_line_fix"> <h1>Blog K・T</h1> <h2><a href="index.html">トップページ</a></h2> <?php if( $mode=='input'){ ?> <form method=post> お名前(ニックネーム)<br> <input type="text" name="name" value="<?php echo $_SESSION['name'] ?>"><br> Eメール<br> <input type="email" name="email" value="<?php echo $_SESSION['email'] ?>"><br> カテゴリー<br> <input type="text" name="category" value="<?php echo $_SESSION['category'] ?>"><br> 本文<br> <textarea style="font-size:1.5em;" cols="30" rows="80" name="message"><?php echo $_SESSION['message'] ?></textarea><br> <input type="submit" name="confirm" value="確認" /> </form> <?php }else if( $mode=='confirm'){ ?> <!--確認画面--> <form method="post"> <?php echo $_SESSION['name']?><br> <?php echo $_SESSION['email']?><br> <?php echo $_SESSION['category']?><br> <br> <?php echo nl2br($_SESSION['message'])?><br> <input type="submit" name="back" value="戻る"/> <input type="submit" name="send" value="送信"/> } </form> <?php } else { ?> <!--完了画面--> <?php } ?> </body> </html>

    • ベストアンサー
    • PHP
  • PHPのWebアプリ作成

    乱数で得た値を当てるというアプリを作っています。 <html> <head> <meta http-equiv="Content-type" content="text/html; charset=ISO-2022-JP"> <title>数あてゲーム</title> </head> <body> <h1>数あてゲーム</h1> <form action="numinput.php" method="POST"> <ul> <li>このゲームは、0から10までの間からランダムにひとつ選ばれた数が隠されています。 <li>当てるチャンスは3回あり、入力欄に数を入力してsubmit ボタンを押すと判定されます。 <ul> <input type="submit" value="スタート"/> <input type="hidden" name="ranum" value="rand(0, 10)"/> <input type="hidden" name="charenge" value="1"/> </form> </body> </html> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=EUC-JP"> <title>入力</title> </head> <?php $ranum = $_POST['ranum']; $charenge= $_POST['charenge']; ?> <body> <h1>入力</h1> <?php <form action="judge.php" method="POST"> <input type="text" name="num"/> <input type="submit" value="submit"> ?> </form> </body> </html> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=EUC-JP"> <title>判定</title> </head> <?php $ranum = $_POST['ranum']; $charenge = $_POST['charenge']; $num = $_POST['num']; ?> <body> <h1>判定</h1> <?php if(!is_numeric($num)) { print("数値以外が入力されました.<br/>"); print("<a href=\"numinput.php\">入力ページ</a>からやり直 してください"); }else if($num == $ranum){ print("あたりです。"); }else if($num != $ranum && 3 > $charenge){ print("はずれです。 <br/>"); print("<a href=\"numinput.php\">入力ページ</a>からやり直 してください"); $charenge = $charenge + 1; }else{ print("はずれです。 <br/>"); print("正解は $ranum です"); } ?> </body> </html> この3つを組み合わせて作っていますが、 スタートを押してnuminput.phpに行こうとすると Parse error: syntax error, unexpected '<' in ~/numinput.php on line 13と出て先に進めません。どなたか解決方法を教えていただけませんか? また、乱数の受渡しがちゃんとできているのでしょうか?

    • ベストアンサー
    • PHP

専門家に質問してみよう