0

重複の可能性:
PHP 5.3 はフォーム文字列から $_GET/$_POST を自動的にエスケープしますか?

解決できない問題があります。私の Web サイトには、変数を渡す検索機能があります。一部の url 変数には、アポストロフィが含まれている場合があります。例えば:

http://xyz.php?var=that's

私の問題は、変数が渡されると、アポストロフィをエスケープするために \ が追加されることです。次に、ページング ボタンをクリックすると、\ を追加してエスケープがエスケープされます。URL のエスケープを停止する方法はありますか。アポストロフィを返すか、一度だけエスケープすると問題なく動作します。

http://xyz.php?var=that's or http://xyz.php?var=that\'s

しかし、ページネーションすると、エスケープがエスケープされ、

> http://xyz.php?var=that\\\'s

複数のスラッシュを追加してエスケープをエスケープすると、検索が中断されるか、結果が返されません。

これがエスケープをエスケープしたり、URLをまったくエスケープしたりしないようにするphp関数を知っている人はいますか。ありがとうございました。

4

2 に答える 2

0

URLパラメータをエスケープするには、urlencode()(またはurldecoreを使用してurlをデコードします)を使用します

クエリ内に変数値を入れるときは、 mysql_real_escape_string()

<a href="search.php?var=<? echo urlencode("something isn't right");?>">search</a>

mysql_query("SELECT .. WHERE x = '" . mysql_real_escape_string($_GET['var']) . "'");

そして、あなたは元気でなければなりません。

サーバー構成でマジッククォートが有効になっている場合は、マジッククォートを無効にします。

于 2012-10-20T20:34:48.447 に答える
0

parse_str を使用している間、おそらくスラッシュの自動追加を防ぎますか?

// Turn off magic_quotes_runtime
if (get_magic_quotes_runtime())
    set_magic_quotes_runtime(0);

// Strip slashes from GET/POST/COOKIE (if magic_quotes_gpc is enabled)
if (get_magic_quotes_gpc())
{
    function stripslashes_array($array)
    {
        return is_array($array) ? array_map('stripslashes_array', $array) : stripslashes($array);
    }

    $_GET = stripslashes_array($_GET);
    $_POST = stripslashes_array($_POST);
    $_COOKIE = stripslashes_array($_COOKIE);
}

また、magic_quotes の無効化に満足できない場合は、stripslashesを参照してください。

于 2012-10-20T19:45:35.673 に答える