• 締切済み

PHPのデータやり取りについて

自分はPHPを独学している学生です。 ちなみにPHP歴3日です。。。 先日[改訂3版 基礎PHP]という教本を購入してPHPの勉強を始めたのですが、 何度教本の通りに試してもうまく動作しないスクリプトがありまして、 内容としてはHTMLファイルの入力フォームでデータを受け取り、phpファイルに受け渡して表示するだけの簡単なものなのですが、なぜかphpによる画面が表示される際に入力したものが表示されないという症状になっています。 ブラウザが原因かと思い、IEとFirefoxで試したのですがどちらも同じ症状でした。 原因がわかる方に教えていただけないかと思っております。 コードは以下の通りです。 welcome.html <html> <head><title>welcome.html</title></head> <body> どちら様ですか?<br /> <form action="welcome.php" method="POST"> <input type="text" name="name"> <input type="submit" value="送信"> </form> </body> </html> welcome.php <html> <head><title>welcome.php</title></head> <body> ようこそ <?php $name = $_POST['name']; print (htmlspecialchars($name, ENT_QUOTES,'UTF-8')); ?> さん </body> </html>

みんなの回答

  • 1E-9
  • ベストアンサー率51% (22/43)
回答No.1

こちらの環境に入れてみたら正しく動作したので、プログラム自体に問題は無いようです。 確認事項としては、 ・大前提として、PHP4.1.0以上が動作するサーバーでしょうか。 ・おそらく文字コードの問題だと思います。  ファイルの文字コード、サーバーのPHP内部・外部エンコードは何になっていますか? ・htmlspecialcharsでUTF-8設定をしているので、ファイルをUTF-8で保存。 ・下記あたりをwelcom.phpの<html>の前に入れれば表示されそうな気がします。 <? mb_language('ja'); mb_internal_encoding('UTF-8'); mb_http_output('UTF-8'); ob_start("mb_output_handler"); ?>  

VBSY
質問者

補足

回答ありがとうございます。いただいたものを挿入してみたのですが、駄目でした。 捕捉します。 サーバーの代わりにxamppを使っていまして、自分のPCで完結しています。こちらのシステムは最新のphpに対応しています。設定ファイルで以下のような設定を行いました。 mbsringに関しては次のようになっています。 mbstring.detect_order UTF-8 UTF-8 mbstring.encoding_translation Off Off mbstring.func_overload 0 0 mbstring.http_input UTF-8 UTF-8 mbstring.http_output UTF-8 UTF-8 mbstring.http_output_conv_mimetypes ^(text/|application/xhtml\+xml) ^(text/|application/xhtml\+xml) mbstring.internal_encoding UTF-8 UTF-8 mbstring.language Japanese Japanese mbstring.strict_detection Off Off mbstring.substitute_character UTF-8 UTF-8 mbstringとは別に次のような設定をしています。 output_buffering = On //バッファリング処理有効化 default_charset = "UTF-8"//出力文字コード指定 phpによる「ようこそさん」の表示は行われるので文字コードの問題ではない気がします。。。私見ですが。。 その後、レンタルサーバーに移して試したところ、うまく動作したので、xamppのphp.iniファイルにおかしな設定をしてしまった可能性が高いです(^_^;)