実行結果が文字化けしてしまいます

このQ&Aのポイント
  • 実行結果が文字化けしてしまう原因と解決策について
  • PHPを利用したクイズの作成方法について
  • 文字化けを防ぐための設定方法について
回答を見る
  • ベストアンサー

実行結果が文字化けしてしまいます・・。

PHPは初心者で現在勉強中です。 とあるサンプルを真似して、以下の簡単なクイズを作成していましたが、 実行結果(データpost後の回答表示)が「筝罩hВ鐚」と文字化けしてしまいます。 どこがおかしいか、また、本来どのように描くべきなのか教えて頂けないでしょうか。 宜しくお願い致します。 ------------------------------------------------------------------------- <?php // クイズ $quiz = array( 'question'=>'海は何色?', 'options'=>array('赤', '青', '金', '銀', '黒'), 'answer'=>2); if ($_SERVER['REQUEST_METHOD']=="POST") { $message = ($quiz['answer'] == $_POST['answer']) ? "正解" : "不正解"; echo $message; exit; } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <title>PHPの練習</title> </head> <body> <h1>PHPの練習</h1> <form action="" method="post"> <p>Q. <?php echo $quiz['question']; ?></p> <ul> <?php foreach ($quiz['options'] as $key => $value) : ?> <li><input type="radio" name="answer" value="<?php echo $key; ?>"> <?php echo $value; ?></li> <?php endforeach; ?> </ul> <input type="submit" value="回答"> </form> </body> </html>

  • oneA
  • お礼率29% (9/31)
  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • agunuz
  • ベストアンサー率65% (288/438)
回答No.2

スクリプト自体は問題ありません(最初のフォーム画面は文字化けしていないのでしょうから、キチンとutf-8で保存されていると推測)。 が、POST後の表示ではmeta要素がないので(正解・不正解だけ)ブラウザが誤認識する可能性はあります(手元のFirefoxでは化けませんでしたが)。 htmlを全部書き出すのが面倒であれば、最低でも header('Content-type: text/html; charset=utf-8'); echo $message; としてください。

oneA
質問者

お礼

ありがとうございます。chromeでの出力だったんですが、FireFoxだとこちらも正常に表示されました。上記アドバイスや、POSTの上にhead以降を書く事で解決しました。 下の様なコミニュケーションも取れない馬鹿ばかりではないんですね。 ご丁寧に有難うございました。

関連するQ&A

  • 特定の文字が文字化けします

    こんにちは。 とても困ってます。 例えば、phpで echo "<P><FORM ACTION=\"main.php\">"; echo "<METHOD=POST>"; echo "<INPUT TYPE=HIDDEN NAME=res VALUE=\str_request\">"; echo "<INPUT TYPE=HIDDEN NAME=action VALUE=post>"; echo "<TEXTAREA NAME=\"str\" ROWS=\"8\" COLS=\"50\"></TEXTAREA>"; echo "<INPUT TYPE=\"submit\" VALUE=\"send">"; echo "</METHOD></FORM></P>"; と記述して「send」ボタンを押下して文字列をPOSTした場合、 受け取った文字($str)の特定の文字が文字化けします。 特定の文字とは、「る」「れ」「ろ」などです。 どなたか原因がわかる方いらっしゃらないでしょうか?

    • 締切済み
    • PHP
  • php初心者です。クイズについて

     phpでランダムに問題が表示され、それに答えると「正解!」、 「不正解!」となるようにしたいのですが。(単語カードみたいな)  問題をランダムに表示することは出来たのですが、問題に 対しての答えをどの様に記述すればいいのでしょうか? (下記のソースに追加・修正をして頂くか、参考となるサイト があれば教えて頂けないでしょうか?)  当方、phpをかじり始めたばかりなので、わかりやすく 教えて頂けると助かります。  どなたか、ご教授宜しくお願い致します。 <?php $quiz = array("りんごを英語で?", "いちごを英語で?", "とまとを英語で?"); shuffle($quiz); error_reporting(E_ALL & ~E_NOTICE); $kotae=$_POST["kotae"]; if ($_SERVER['REQUEST_METHOD']=="POST") { $message = ($quiz['answer'] == $_POST['kotae']) ? "正解!" : "不正解!"; echo $message; exit; } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> </head> <body> <form action="" method="post"> <p>Q. <?echo current($quiz); ?> </p> <input type="text" name="kotae" size="50"><br><br> <input type="submit" value="回答する!"> </form> </body> </html>

    • ベストアンサー
    • PHP
  • 文字列(×と÷)の文字化けについて

    phpを勉強している初心者です。 2つのテキストボックスを作って、 各数値を「架ける」または「割る」計算処理ができるように記述しています。 index.phpのフォーム部分は下記のようになっています。 <form method="post" action="test.php"> 入力欄1:<input type="text" name="number1"><br> <input type="radio" name="kigou" value="×">× <input type="radio" name="kigou" value="÷">÷<br> 入力欄2:<input type="text" name="number2"><br> <input type="submit" value="計算"> </form> test.phpの処理部分は下記のようになっています。 <?php if($_POST["kigou"] == "×" ){ $answer=$_POST["number1"]*$_POST["number2"]; }elseif($_POST["kigou"] == "÷" ){ $answer=$_POST["number1"]/$_POST["number2"]; } print $_POST["number1"].$_POST["kigou"].$_POST["number2"]."=".$answer; ?> しかし、結果では、記号部分が文字化けしてしまいました。 (例:4テ4=16、4テキ4=1) HTMLの特殊記号を試しに設定してみましたが 計算すらしてくれなくなりました。 (&times;と&divide;) こんな場合、どうすれば良いのでしょうか? また、if分の条件式にはHTMLの特殊記号は使えないのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • mysqlの結果セットを配列に

    while($row=mysql_fetch_array($res)){ echo "<form action=kousin.php method=post>"; echo "<TD bgcolor=#FFFFFF><input type='text' name=zaiko[] value=". $row["注文"] . "></td>"; echo "<input type=hidden name=store1 value=". $row["注文"] .">"; --------------------------------------------------- $zaiko[]=$_POST["zaiko[]"]; 上記のようなイメージでフォームから送った結果セットを配列として格納したいのですが、どのようにしたら良いのでしょうか?よろしくお願いします。

    • ベストアンサー
    • PHP
  • postのタイムラグ

    以下のソースでPOSTの値が取れないときがあるので困っています。 具体的にはページを表示してから30秒程度待ってからの クリックじゃないとPOSTの値が取れません。 GETの場合はページ表示後すぐにボタンをクリックしても大丈夫でした。 原因が分からず途方に暮れています。 お知恵をお貸しください。 PHP Version 5.2.3 <?php $P_data = $_POST["pg"]; print("POST=>".$P_data."<BR>"); $G_data = $_GET["pg"]; print("GET=>".$G_data."<BR>"); print <<< DOC_END <html> <head> </head> <body> DOC_END; echo"<form action=test.php method=post>"; echo"<input type=hidden name=pg value=1>"; echo"<input type=submit value=あ>"; echo"</form>"; echo"<form action=test.php method=post>"; echo"<input type=hidden name=pg value=2>"; echo"<input type=submit value=い>"; echo"</form>"; echo"<form action=test.php>"; echo"<input type=hidden name=pg value=3>"; echo"<input type=submit value=う>"; echo"</form>"; echo"<form action=test.php>"; echo"<input type=hidden name=pg value=4>"; echo"<input type=submit value=え>"; echo"</form>"; print <<< END </body> </html> END; ?>

    • 締切済み
    • PHP
  • 複数フォームについて

    こんばんは。 いま行き詰ってます(汗) 早速質問なんですが、三つのフォームを用意します。 <FORM method="POST" action=<?echo"xxx.php?1"?>> <INPUT type="submit" value="A" </FORM> <FORM method="POST" action=<?echo"xxx.php?2"?>> <INPUT type="submit" value="B" </FORM> <FORM method="POST" action=<?echo"xxx.php?3"?>> <INPUT type="submit" value="C" </FORM> 上記のHTMLを実行。 [A][B][C] Aを押すとxxx.php?1 Bを押すとxxx.php?2 Cを押すとxxx.php?2 と別々のアクションに行くはずだと思ったんですが.。 常にxxxx.php?1です(笑) これを、ABCそれぞれのボタンにアクションをつけたいんですが、 可能ですか?? ご教授お願い致します!!!

  • form変数の初期化

    <br /><b>Notice</b>: Undefined index: your_name in <b>C:\xampp\htdocs\test\index.php</b> on line <b >83</b><br /> 入力画面で上記のエラーが解決しません。 どうすればいいでしょうか? 入力画面 <?php $_POST = array(); ?> <form method="post" action="./form_check.php"> <div class="element_wrap"> <label>氏名</label> <input type="text" name="your_name" value="<?php echo $_POST["your_name"]?>"> </div> <div class="element_wrap"> <label>メールアドレス</label> <input type="text" name="email" value=""> </div> <input type="submit" name="btn_confirm" value="入力内容を確認する"> </form> 確認画面 <?php $your_name = $_POST["your_name"]; ?> <form method="post" action="./test.php"> <div class="element_wrap"> <label>氏名</label> <p><?php echo $your_name; ?></p> </div> <div class="element_wrap"> <label>メールアドレス</label> <p><?php echo $_POST['email']; ?></p> </div> <input type="submit" name="btn_submit" value="送信"> </form> <form method="post" action="./index.php"> <!--<input type="button" name="btn_back" onclick="history.back()" value="戻る">--> <input type="submit" name="btn_back" value="戻る"> <input type="hidden" name="your_name" value="<?php echo $_POST['your_name']; ?>"> <input type="hidden" name="email" value="<?php echo $_POST['email']; ?>"> </form>

    • 締切済み
    • PHP
  • フォームを使った配列変数の受け渡し

    PHP初心者です、よろしくお願いします。 フォームからPHPで配列変数を受け渡すことを考えています。 一次元配列はうまく渡せましたので、これを二次元にしましたところ、 うまく渡せません。基本的なPHPの文法がわかってないので、つまづい ています。多分、配列変数の記述方法がおかしいのだと思うのですが・・。 ご教授よろしくお願いします。 <html> <body> <form method = "POST" action ="test2.php" > <?php //データ渡し側 for ($i = 0 ;$i < 2 ;$i ++){ for ($j=0 ;$j <2;$j ++ ){ echo ("<input type ='text' name = 'data[$i][$j]' size ='10'>\n"); echo ("<br>\n"); } echo ("</tr>\n"); } ?> <input type="submit" name ="sbmit" value="data_input" > </form> </body> </html> <?php //データ受け側 for ($i = 0 ;$i < 2 ;$i ++){ for ($j=0 ;$j < 2;$j ++ ){ $tmp_data[$i][$j] = $_POST["data"][$i][$j]; echo ("$tmp_data[$i][$j] <br>\n"); } } ?> <html> <body> <form method = "POST" action ="test2.php" > <?php for ($i = 0 ;$i < 2 ;$i ++){ for ($j=0 ;$j <2;$j ++ ){ echo ("<input type ='text' name = 'data[$i][$j]' size ='10' value='$tmp_data[$i][$j]'>\n"); echo ("<br>\n"); } } ?> </table> <input type="submit" name ="sbmit" value="in" > </form> </body> </html> 実行結果は、 Array[0] Array[1] Array[0] Array[1] と表示されて、実際の入力した値が反映されません。

    • ベストアンサー
    • PHP
  • hidden属性だけのフォーム

    hidden属性だけのフォームというのはちゃんと動作しますか? 自分のソースでは動作せず、送り先のPHPスクリプトでvar_dump()すると、$_POST['']の中身が NULL になってました。送信やリセットボタンを作らずに送信できるとすれば、どんな ソースになりますか? <?php echo '<form name="form1" method="POST" action="../../disp_access.php">'; echo '<input type="hidden" name="from" value="1">'; // どのページから飛んできたかを示す echo '<input type="hidden" name="browser" value="'.$referer.'">'; echo '<input type="hidden" name="ip" value="'.$ip.'">'; echo '</form>'; ?>

    • ベストアンサー
    • HTML
  • データーベースをフォームから入力し更新

    データーベースをフォームから入力し更新 登録済のデーターベースをフォームから入力し更新したいのですが、どうしてもうまくいきません。 http://park18.wakwak.com/~little-box/Dreamweaver/sql010.htm のサイトを参考にしているのですがitiran.phpのところからつまづいています。 // 検索した結果を全部表示 echo "<table border=1>"; echo "<tr><td>id</td><td>name</td></tr>"; while($row=mysql_fetch_array($res)){    echo "<tr>";    echo "<td>". $row["name"] . "</td>";    echo "<td>". $row["age"] . "</td>";    echo "<form action=koushin_input.php method=post>";    echo "<input type=hidden name=id value=" . $row["id"] . ">";    echo "<td><input type=submit value=更新></td>";    echo "</form>";    echo "<form action=sakujo.php method=post>";    echo "<input type=hidden name=id value=" . $row["id"] . ">";    echo "<td><input type=submit value=削除></td>";    echo "</form>";    echo "</tr>"; } echo "</table>"; の辺りがおかしいのではと思っているのですが… アドバイスください。また、他に参考になるサイトがありましたらぜひ教えてください。

    • ベストアンサー
    • PHP