2011-08-09 66 views

回答

3

它以在.ini水平來完成。它不能在使用ini_set()的腳本中完成,因爲在處理ini_set()時,PHP已經完成啓動並且已經設置了各種超全局數組(POST/GET/REQUEST/etc ...)並不會被改變。

您可以使用Apache <Files>指令,因爲讓魔術引號所有PHP腳本是一個可怕的想法使每個腳本的設置:

<Files needs_gpc.php> 
    php_value magic_quotes_gpc 1 
</Files> 
+0

謝謝馬克。 what_gpc.php是什麼意思? – Michael

+0

這是你需要啓用魔術引號的任何腳本的名稱:http://httpd.apache.org/docs/2.2/mod/core.html#files –

+0

明白了。謝謝。 – Michael

3

然後不使用該腳本啓用魔術引號是相當糟糕的。

從PHP 5.3.0開始,此功能已被拒絕。依靠這個功能是非常不鼓勵的。

DOC

WHY-NOT in DOC

+2

Spot on answer。 –

+2

如果你需要做的第一件事是啓用魔術引號來讓它運行,我只能想象在幕後會發生什麼其他的廢話。 –

+0

@韋斯利,我們可能永遠不會知道 – Neal

0

是的,可以。該功能在默認情況下處於禁用狀態,但尚未刪除。只要修改php.ini文件(或使用馬克·B的建議啓用它,只爲特定的腳本)

+0

當然。謝謝Mchl。 – Michael

2

你可以像一個簡短的腳本模擬magic_quotes的:

$_GET = array_map("addslashes", $_GET); 
$_POST = ... 

請注意,你需要一個recursive variant實際。而當你在它的時候,你至少可以使用_real_escape_string而不是addslashes(如果你的數據庫和連接只使用ASCII,那麼它纔是真正的允許的)。

爲了有一個啓用了所有的腳本中使用的php.ini選項:

auto_prepend_file = .../fake_magic_quotes.php 

至少在PHP 5.3有可能但仍然使這種過時的功能。

+0

如果有問題的腳本實際檢查選項是否啓用,則不會執行此操作。 – Mchl

+0

只是從OP的簡短詢問中猜測;它可能甚至不會那樣做。 – mario

+0

謝謝馬里奧。我會試一試。 – Michael

相關問題