我傳遞使用的代碼看起來像這樣我的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);
上面的變量賦值和頭調用之間,網址如下:
sites.php?msg="Some site" modified.
但是在任一環境中都不顯示任何消息。如果$_REQUEST['site']
包含&符號,我也有類似的問題。
任何人都可以解釋這裏發生了什麼,以及如何解決它?
您可能在生產環境中啓用了魔術引號。看看這個http://php.net/manual/en/security.magicquotes.php – NoBBy
我以前關掉魔術引號,所以我認爲這不是問題。答案回覆如此令人震驚的魔術引號,我想我會再次檢查。這個應用程序實際上安裝在我的網站上的一個子域中,並且默認爲該子域的魔術引號。衛生署!謝謝您的幫助。好奇的是,當我關閉它時,它是否打破了我在該子域上的wordpress安裝... – JDycus