php
  • magic-quotes-gpc
  • 2012-08-24 23 views 0 likes 
    0

    可能重複:
    「slash before every quote」 problem爲什麼我的引用文字出現「像這樣」?

    我傳遞使用的代碼看起來像這樣我的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=&quot;Some site&quot; modified. 
    

    但是在任一環境中都不顯示任何消息。如果$_REQUEST['site']包含&符號,我也有類似的問題。

    任何人都可以解釋這裏發生了什麼,以及如何解決它?

    +1

    您可能在生產環境中啓用了魔術引號。看看這個http://php.net/manual/en/security.magicquotes.php – NoBBy

    +0

    我以前關掉魔術引號,所以我認爲這不是問題。答案回覆如此令人震驚的魔術引號,我想我會再次檢查。這個應用程序實際上安裝在我的網站上的一個子域中,並且默認爲該子域的魔術引號。衛生署!謝謝您的幫助。好奇的是,當我關閉它時,它是否打破了我在該子域上的wordpress安裝... – JDycus

    回答

    1

    的配置被稱爲magic_quotes_gpc

    -1

    用stripslashes:http://php.net/manual/en/function.stripslashes.php

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

    最好解決問題,而不是隱藏症狀。 – vascowhite

    1

    您已啓用Magic Quotes它們設置在php.ini中禁用。

    相關問題