0

重複の可能性:
「すべての引用符の前にスラッシュ」の問題

次のようなコードを使用して、php アプリケーションのさまざまな部分間でメッセージを渡しています。

$msg='"'.$_REQUEST['site'].'" modified.';
header('Location: sites.php?msg='.$msg);
exit();

反対側でそれを拾うコードは次のようになります。

<?php if (isset($_GET['msg'])) {echo '<p><em>'.$_GET['msg'].'</em></p>';}?>

私の開発環境では、出力は次のようになります"Some site"。私の運用環境では、出力は次のようになります\"Some site\"

これは、環境間の設定の違いであると私は信じていphp.iniます。眼球がマメになるまで探しましたが、違いがわかりません。URL で渡される内容は次のようになります。

sites.php?msg="Some site" modified

このコードを入れると:

$msg=htmlspecialchars($msg);

上記の変数割り当てとヘッダー呼び出しの間で、URL は次のようになります。

sites.php?msg=&quot;Some site&quot; modified.

ただし、どちらの環境でもメッセージは表示されません。$_REQUEST['site']アンパサンドが含まれている場合も同様の問題があります。

ここで何が起こっているのか、そしてそれを修正する方法を誰かが説明できますか?

4

3 に答える 3

1

構成はmagic_quotes_gpcと呼ばれます

于 2012-08-24T07:46:53.623 に答える
1

PHP.INIMagic Quotesでそれらを無効に設定しました。

于 2012-08-24T07:49:54.117 に答える
-1

ストリップスラッシュを使用: http://php.net/manual/en/function.stripslashes.php

<?php if (isset($_GET['msg'])) {echo '<p><em>'.stripslashes($_GET['msg']).'</em></p>';}?>
于 2012-08-24T07:46:19.527 に答える