2012-03-01 36 views
1

當我在PHP中閱讀函數get_magic_quotes_gpc()時,我非常困惑。我是否應該總是使用反斜槓_POST _GET和_COOKIE變量

到處都有人說功能已過時(example)。

但是PHP 5.3中的默認行爲是什麼?我用來檢查,如果magic_quotes_gpc在和剝離所有的斜槓,如果是這樣的話,在我的腳本開始的所有POST,GETCOOKIE變量,以便我不會感到困惑。

但是,如果我不應該檢查使用get_magic_quotes_gpc()添加的斜線,如果PHP 5.3沒有添加斜槓,總是刪除斜槓會導致錯誤的數據。

我有this

同樣的困惑目前magic_quotes_gpc是我的服務器(PHP 5.2.17),所以我需要刪除斜槓。但我應該如何處理這個問題,爲將來的PHP版本做好準備?

我可以以某種方式在我的腳本開始的運行時期間設置默認值嗎?但是默認值是什麼?

回答

7

get_magic_quotes_gpc函數不會被棄用,它的magic_quotes_gpc配置設置已棄用。

的解決方法是不使用自己的服務器上的magic_quotes_gpc配置設置,而且還利用get_magic_quotes_gpc如果你想編寫可靠的代碼,將在那些已經過時的magic_quotes_gpc設置開啓的服務器上運行。

換句話說:

  • 在你的配置關閉magic_quotes_gpc
  • 無論你正在使用stripslashes,只要調用stripslashes如果get_magic_quotes_gpc() == 1
+0

不幸的是我沒有對該服務器的配置文件的寫入訪問權限。我寫了一個自己的函數來檢查magic_quotes_gpc()。但是你說添加的斜線是PHP> 5.3中的默認行爲?你有參考嗎? – 2012-03-01 14:32:11

+0

不,除非啓用'magic_quotes_gpc',否則添加斜槓不是默認行爲。你並不需要編寫你自己的'get_magic_quotes_gpc'版本,它不會被棄用。 – 2012-03-01 14:41:49

+0

我開始使用函數「filter_input_array()」。看來這個函數會自動刪除值中的斜槓。我真的沒有看到http://www.php.net/manual/en/filter.filters.sanitize.php上的警告文字。清理過濾器去除斜線的默認行爲是?爲什麼不刪除數組中的斜線?例如''input type =「text」name =「name [3] [to " ll]」value =「"」>''給出'name [3] [to \「ll]:''作爲輸出。所以,對於這些值,刪除了斜線但不是鍵值。但我無法在PHP手冊中找到這種行爲的描述,... – 2012-03-02 11:10:21