• ベストアンサー

PHP 引数渡しの文字化けについて

PHP間での文字列引数渡しで文字化けします。 a.phpの内容(一部) print "<a href=\"http://xxxx.jp/b.php?time=" . $date . "&title=" . $title . "&data=" . $data . "\">画面遷移</a> b.phpの内容(一部) $data = $_GET["data"]; print = $data; $dataの文字数は200文字程度ですが、なぜか文字と文字の間に\が挿入される箇所が結構あります。 この\部分は引数を渡す側(a.php)には存在しないのですが、なぜかb.phpで受け取り表示すると\が挿入されています。 この\を取り除きたいのですが、どうしてもわかりません。 文字コードも同じですし、検討がつきません。 アドバイス宜しくお願い致します。

  • PHP
  • 回答数2
  • ありがとう数0

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

  • ベストアンサー
回答No.1

PHPには、$_GET/$_POST/$_COOKIEで取得される値の中に、「\」「'」「"」等々の文字が含まれていると、自動的にソレの前に「\」を付加するという設定があります。(理由はインジェクション対策とか。) 詳しい内容は、参考URLを確認していただくとして。 また、Shift_JISでPHPが記述されている場合、全角文字の中でも、 カタカナの「ソ」などの前に「\」が付加されます。 「5C問題」などで検索してみていただくと詳細が分かります。

参考URL:
http://nyx.pu1.net/practice/form/form3.php

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

もしかして$dataをそのまま引数として書いてます? せめてurlencode()してみませんか? "time=".urlencode($date) . "&title=" . urlencode($title) . "&data=" . urlencode($data)

関連するQ&A

  • PHPの引数渡しについて【ギブアップ】

    色々調べましたがわからず質問させて頂きます。 以下のPHP間で引数渡しをしたいのですが上手くいきません。 【A.php】 一部のみ抜粋 <FORM ACTION="./b.php?PASS=data" METHOD="POST" NAME="ppform"> <input type="password" name="data" size=20> </FORM> 【B.php】 一部のみ抜粋 <?php $Pass = $_GET["PASS"]; echo <<<A $Pass<BR> A; ?> とすると「data」という文字が出力されます。 やりたいことは、A.phpでパスワード入力された文字を表示したいのです。 (dataの中身を取得したいのです。) これのどこがいけないのでしょうか? ご指摘宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 文字化けについて

    phpMyAdmin上ででテーブルを作成し、データを挿入したところ、 phpMyAdmin上であれば、正常に表示されます。 しかしPHPでセレクト結果を表示したところ、 マルチバイト文字が文字化けします。 次にMySqlCommandLineClientよりデータを挿入し、 PHPでセレクト結果を表示すると文字化けはしません。 しかしphpMyAdmin上で参照すると文字化けしています。 文字設定がさっぱりわかりません....よろしくお願いします。 MySQL 4.1.7 PHP 5.02 phpMyAdmin 2.6.0

    • ベストアンサー
    • PHP
  • modalbox使用時の文字化けについて

    初めて質問させて頂きます。よろしくお願いします。 現在作成中のWEBサイトにmodalboxを実装させ、htmlを表示させようと試みているのですが、文字化けにより正しく表示されません。 対象となるページは下記の2種です。  A.php(遷移元ページ…modalboxを実装しているページ)  B.php(遷移先ページ…A.phpのmodalboxより参照するページ) A.phpのリンクよりmodalboxを使用してB.phpを表示させたいのですが、画像やテーブル等に問題は無いものの文字が全て化けてしまっています。 ※B.phpへ直接アクセスすると問題なく表示されます。 ※また、B.phpはutf-8を指定しています。 ※その他、文字化け以外目立ったバグ等はありません。 下記、A.PHPに組み込んだソースです。 <link rel="stylesheet" href="css/modalbox.css" type="text/css" media="all"> <script src="js/prototype.js" type="text/javascript"></script> <script type="text/javascript" src="lib/scriptaculous.js"></script> <script type="text/javascript" src="lib/modalbox.js"></script> <script type="text/javascript"></script> リンク用ソース <a href="B.php" title="Bページです" onclick="Modalbox.show(this.href, { title : this.title,height:400 }); return false;">Bページです</a> 当方、WEB系技術は全くの素人です。 説明不足の部分等多々あるかと思いますが、 何卒ご教授の程よろしくお願い致します。

    • ベストアンサー
    • CSS
  • 文字化け

    PHPとMySQLを利用して、ホームページを作っています。 ところが、どうしても一部文字化けをしてしまいます。 EUCとS-Jisの違いというのは分かっているんですけど、 データベースにアップする際、S-Jisでデータ挿入と しているにも関わらず、文字化けをするのはなぜでしょうか? また、念のため、表示する側(PHP)でも、S-Jisで表示するように指定しているんですけど…。 これは、どうしても回避できないんでしょうか? データベースに挿入する際に、例えば「表\示」と最初から 入れておかないとだめ、ということでしょうか?

  • PHP4からPHP5にしたときのDB文字化けについて

    よろしくお願い致します。 すでに、PHP4で作っていたサイトで、DBにもいろいろと登録していたのですが、PHP5にしたい事情が出てしまい、PHP5にしました。 すると、すでに登録されていた、DBの内容が文字化けしてしまいました。 PHP4(UTF8)+MySQL5(UTF8) → PHP5(UTF8)+MySQL5(UTF8) 情報足りませんでしたら申し訳ないです、申し付けて下さい。 phpMyAdminから見たときは、すでに入っていたDBの内容は文字化けはしていないのですが… 次にPHP5で新しく登録した場合は、サイトでの表示は文字化けしないのですが、次はphpMyAdminで見ると文字化けしていました。 php.iniの設定も同じにしてます、Apacheのconf設定なども見たのですが、文字化けは解消しませんでした。 よろしくお願い致します。

    • 締切済み
    • PHP
  • PHP3の文字化け

    PHP3について質問です。 php4でprint "<td>$value</td>\n";するとうまく表示されるのですが、php-3.0.18-i18n-ja-3だと文字化けしてしまいます。"輔"や"子"などです。解決策を探しています。お願いします。

    • 締切済み
    • PHP
  • PDO+PHP+MSSQLで文字化け

    ExcelからADO経由でSQLSERVER Express2014に登録したデータをPHPでPDO経由で取得しようと思っていますが、文字化けで困っています。 print_r($row);で取得したレコードを表示したところ、データ自体は文字化けしていませんがフィールド名が化けています。 PHPファイルの保存形式、SET NAMESでの文字コード、PHP.INIの設定等、どこで指定すればいいのかご教授願えませんでしょうか? 情報不足であれば追加します。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • php+MySQLで文字化け

    MySQLに漢字のデータが入っています コマンドプロンプトで show title from board などとやると、漢字が表示されます phpを介してtitleなどを表示させると 文字化けします phpの中でecho ”漢字”などやると ちゃんと、漢字が表示されます WindowXPで実行です よろしくおねがいします

    • ベストアンサー
    • PHP
  • PHPからInsertしたら文字化けしてしまいました。

    Apache2,PHP5,MySQL5を使用しています。 PHPからMysqlにデータを格納し、その後MySQLからデータを受け取りPHPで表示させると、PHPでは問題なく表示されていたのですが、MySQLでは文字化けしてしまいました。 送った内容は、「こんにちは。沢田です」と送りました。 PHPでは「こんにちは。沢田です。」となっていたのですが、MySQLには「??"??"???????????¢?" ??§??」となって格納されていました。 PHPではutf8でsjisにして設定しています。何がいけないのでしょうか。 よろしくお願いします。

  • PHPでHTMLからPOSTされたデータが文字化けします。

    PHPでHTMLからPOSTされたデータが文字化けします。 超初心者ですので表現に誤りがあるかもわかりませんがお許しください。 現在、Win2003・MySQL5.1・PHP5.2と言う環境で簡単なデータベースを作成して、HTMLから検索して 一致したデータを表示させると言うものを作成しています。 検索欄に入力した一部の文字がどうしても文字化けしてしまい解決できません。 詳しくはまだ理解できていないのですが、おそらく検索窓に入力した文字がPOSTされて、それを受けたPHPが文字化けした文字でMySQLのデータベースを検索しようとしているのではないかなっと思ってます。 文字コードはすべてShift-JISで行っているつもりです。 たとえば、 全角の"。"や"?"などの2バイトコードが81**(違ってましたらすみません。。)入力すると "。"は"B"に文字化けされ、"?"は"H"に文字化けします。 また、"院"や"法"などの**40を入力すると"・>  <input type="と表示されて検索ボタンも消えておかしくなってしまいます。 これだけの情報ではお答えして頂けないかもわかりませんが、他にどのような情報があればいいのかもよくわかりません。 わかる範囲で結構ですのでご教授頂けないでしょうか。 よろしくお願い致します。

    • ベストアンサー
    • PHP