• ベストアンサー

日本語をPOSTで送信したときに…

 掲示板のようなプログラムをPHP4で作成してみたのですが、日本語をPOST送信したときに問題がでる場合があります。  たとえば、「表示」とフォームから送信した際に、$_POST['moji']で受け取ると、「表\示」のように、\がはいってしまいます。  文字コード等の問題なのでしょうか?    原因・対処法等をご存知の方がいらっしゃれば何卒ご教授ください。  よろしくお願いします。

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

  • ベストアンサー
  • ika3
  • ベストアンサー率64% (29/45)
回答No.3

下の補足です。 原因なのですが、 「php.ini」の「magic_quotes_gpc」の設定が「on」になっており、フォームから受信したパラメーター内に、漢字コードがバックスラッシュ(\)のコードと重なった文字が含まれている場合、バックスラッシュ(\)が勝手に付けられてしまうということです。

chupark
質問者

お礼

 早速の回答ありがとうございます。  特定の漢字を使用したときに症状がみられたので、何かしら文字コードなどに問題があるのだろうとは思っていたのですが、やはり漢字コードの問題だったのですね。  対処としては先に回答いただいた、strispslashes関数で受け取った文字列からバックスラッシュを抜くということで対処することにします。    カンペキな回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • ika3
  • ベストアンサー率64% (29/45)
回答No.2

$moji = stripslashes($_POST['moji']); echo $moji; 試してみてください。

全文を見る
すると、全ての回答が全文表示されます。
  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.1

ポストした文字情報が足りずに、コンピュータが文字コードを判断しきれずにいます。 対処法は、「文字コード 美乳」と言うキーワードでグーグル当たりで検索してみてください。 # これは冗談ではなくまじめです(^^;

chupark
質問者

お礼

 早速の回答ありがとうございます。 ># これは冗談ではなくまじめです(^^;  この一文がなければ本当に冗談かと困惑したかもしれません^^;  対処としては後でika3様に回答いただいたバックスラッシュの対処で切り抜けることができました。  kusukusu様の回答を拝見して早速Google検索してみたのですが、本当におもしろい話ですね。  単に回答としてだけではなく、話のネタとしても有益な情報を頂いたことにも感謝いたします。    

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • POSTできない

    いま、phpを勉強中です。 そこで簡単なコードを書いてテスト&トライしてますがいきなりつまずいてます… <HTML> <HEAD> <TITLE>post request</TITLE> </HEAD> <BODY> <FORM ACTION="sample.php" METHOD="POST"> 名前:<input type="text" name="myname" value=""> <input type="submit" name="cmd" value="送信"> </FORM> <?php print "入力された文字は?".$myname . "<BR>"; ?> </BODY> </HTML> これを実行し、フォームに文字を入れて送信しても画面にでてきません。"入力された文字は?"だけが表示されたままです。(送信を押すと砂時計がでるのでプログラム自体は走っていると思います) postを使う場合どこか設定をしないといけないのですか??よろしくお願いします。

    • ベストアンサー
    • PHP
  • HTMLのpost送信について

    HTMLのpost送信について 送り側で入力した文字がphpのプログラムへ送られ、 ブラウザが開いて送られた文字列が表示されるはず なのですが、HTMLファイルの送信ボタンを押しても 無反応です。どこがまちがっているいのでしょうか? 送り側プログラム ファイル名:okuri1.html <html> <head> <hitle>送り側プログラム</title><br> </head> <body> <from method="post" action="uke1.php"> <input type="text" name="a"size="20"> <br> <input type="submit" value="送信" size="20"> </form> </body> </html> 受け側プログラム ファイル名:uke1.php <?php print POST["a"]; ?>

    • ベストアンサー
    • PHP
  • 携帯から日本語をフォーム送信→展開に失敗?

    docomo、AUの端末(全端末を試したわけではないのですが)では大丈夫で、 vodafoneの端末のみ、EUC-JP のhtmlからpostにて日本語を送信すると、 遷移後のページで送信されたものを表示しようとすると 「??」と、化けてしまっているのかそう表示されてしまいます。 ・PHPのバージョンは、4.3.10です。 ・1バイト文字ではOKでした ・メタタグ <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> を <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> に、 「htmlもphp(php自体の文字コードも同時に変えています)もどちらも変えてみる」 「htmlだけ変える」 「phpだけ変える」 の3パターンを試してみたのですが、どれも結果は同じでした。 web上を検索して出てきた、フォームのサンプル(ただしソースは無い) http://www.sokudoku.gr.jp/i/form.html を携帯に送って確認したのですが、このページでは文字化けは起こりませんでした。 なので、何かしらの解決方法はあるはずなのですが・・。 PHP側で、フォームから入力された文字を mb_convert_encodingなどで変換しているのでしょうか? どなたかこの問題に対してご経験がある方、ご存知なかたがいらっしゃいましたら、 どうかご教授いただけますよう、よろしくお願い致します。

    • 締切済み
    • PHP
  • jQueryでGETだと送信できるデータがPOSTだと送信できません。

    jQueryでGETだと送信できるデータがPOSTだと送信できません。 jQueryをつかって文字列をPHPに送信したいのですが、GETでは送信できるのにPOSTだと送信ができません。 js -------------------- $.ajax({ type:"POST", //GETだと送信できます。 url:"hoge.php", data:{data:"hoge"}, success:function(data,status){ alert(data); } }); -------------------- php -------------------- <?php $_POST[data] //GETの場合、$_GET[data] == "hoge"。 echo $data; ?> -------------------- 問題点がわかりましたらご指摘いただければと思います。

  • 日本語をコード化(16進数)→復元に問題はないですか?

    フォームから入力された日本語(氏名)をコード化する必要があるので、 for(var i=0; i<moji.length; i++){ moji_code += (moji.charCodeAt(i).toString(16)) + ":"; } と、コード化しています。 例:日本太郎 → 65e5:672c:592a:90ce 1文字あたりのコードをなるべく短くする必要があるので16進数にしています。 コード化された日本語を復元する必要もあるのですが、ここで疑問が湧きました。 16進数にすると4桁になりますよね? 16進数自体をよく理解していないのですがString.fromCharCodeで復元しても問題ないのでしょうか? 問題というか、復元したら違う文字になったりはしないものなのでしょうか? 30文字ほど試したところ、違う文字になったことはありませんでしたが心配になり投稿しました。 また、上記のように16進数化したとき、日本語は必ず4桁になるのでしょうか?(こちらの都合上、5桁や6桁になることがあると問題があるので)

  • フォーム送信後の更新ボタンでも$_POST変数が初期化されない

    フォームのサブミット後にプログラムが走るようになっているtest.phpがあるのですが、フォーム送信後に更新ボタンを押しても再度ポストされるようになってしまっています。 ブラウザの更新ボタンを押したときには、ポストせずにフォームをクリアしたいのですが、どうすればできますでしょうか? <form method="post" action="<?php print($_SERVER['PHP_SELF']); ?>"> <input type=text name=aaa> <input type="submit" name="submit" value="submit"> </form> <?php if($_POST['submit']) { 処理 } ?>

    • ベストアンサー
    • PHP
  • MySQLへの吐き出し日本語が文字化けする

    自分なりに調べてみたのですが,わからないのでお尋ねいたします。 phpmyadminからmysqlに直接日本語を打ち込むと,ちゃんと日本語が表示されます(phpmyadmin内でデータを再度呼び出した時)。が,phpのプログラムからmysqlにデータをinsertし,phpmyadminでデータを参照すると日本語部分のみ文字化けします。 同じプログラムをアイルサーバで動かしていて,そこではうまくいっているのですが,ファーストサーバでうまくいきません。 ファーストサーバの文字コードはEUC-JPですが,phpもプログラムもEUCで書いています。メール送信部分のプログラムは,ちゃんと日本語が出ています。 日本語文字化けの場合に,チェックするべきところは,どういうところがありますでしょうか?。多分,phpというよりはMYSQL側の問題のような気がしないでもないのですが・・・。

    • ベストアンサー
    • PHP
  • $_POSTが、上手くできません。。

    PHP勉強中の初心者です。 簡単な教材で勉強しているのですが、何度やっても上手く行かない部分があり、質問させて頂ければと思います。 やりたい事としては、「form.html」で入力した内容を、$_POSTで「view.php」に表示をするということです。 上手くいっていない処理としては、「form.html」のフォームから文字を入力し、「view.php」で、『○○さん、こんにちは』と表示がしたいのですが、実際には、「form.html」に文字を入れて送信すると、「view.php」の全ソースがブラウザ上で、表示されてしまいます。 こちらは、どのようにすれば、『○○さん、こんにちは』という風に表示することが出来ますでしょうか?php自体の設定に問題があるのでしょうか? もしお分かりになる方がいらっしゃれば、ご教授いただけると幸いです。宜しくお願い致します。 ■form.html <HTML> <HEAD> <TITLE>テキスト送信のテスト</TITLE> <META http-equiv="Content-Type" content="text/html; charset=Shift-JIS"> </HEAD> <BODY bgcolor="#FFFFFF" text="#0000000"> <FONT size="4">テキスト送信のテスト</FONT> <FORM name="form1" method="post" action="view.php"> 名前:<BR> <INPUT type="text" name="onamae"> <BR> <INPUT type="submit" value="送信"> </FORM> </BODY> </HTML> ■view.php <html> <head> <title>PHPのテスト</title> </head> <body> <?php print $_POST["onamae"]. "さん、こんにちは"; ?> </body> </html>

    • ベストアンサー
    • PHP
  • cURL関数を使用したphpからのpost送信と画面遷移

    cURL関数を使用したphpからのpost送信と画面遷移 とある事情で、どうしてもphpからpost送信をしなければならず、 且つ指定したURL先に画面遷移してほしいと考えております。 現状はpost送信自体は成功しているのですが、指定したURL先への画面遷移方法がわかりません。 無理にこの関数を使用した方法で実装をしたいわけではありませんが、 フォームのサブミットを押してpost送信をする処理と、同等の事をphpからpost送信、画面遷移が出来る方法があるのでしょうか? ご教授よろしくお願い致します。

    • 締切済み
    • PHP
  • input nameで日本語を使うと

    PHPのフォームで、 <input type="text" name="メールアドレス" value=""> のように name="" に日本語を使用すると $_POST["メ\ルアドレス"]のように一部分文字化けしてしまいます。これはPHP側の問題なのでしょうか?それともブラウザ側の問題なのでしょうか? #本来からすると日本語を使わないのが基本と思うのですが…

    • ベストアンサー
    • PHP
本体からスキャンできない
このQ&Aのポイント
  • 本体からスキャンする際にネットワーク上のパソコンが見つからない問題が発生しています。
  • Windows11を使用しており、無線LANで接続されています。
  • 電話回線はj:comを使用しています。
回答を見る

専門家に質問してみよう