2011-12-20 36 views
2

從PHP 5.0.3開始,默認情況下已禁用長期預定義數組,例如HTTP_GET_VARS。啓用php.ini以實現向後兼容

Stackoverflow成員Notinlist最近建議,爲了向後兼容,你可以在php.ini中啓用它們....這很難做到,它是成功的嗎?

+0

問題是:你真的需要'HTTP_GET_VARS'嗎?如果您沒有依賴它的代碼,則啓用它是沒有意義的。如果它沒有太多的代碼,它甚至可以適應它。 – middus 2011-12-20 12:49:51

+0

我認爲這是有問題的一塊函數getPostGetVars()全局$ HTTP_POST_VARS,$ HTTP_GET_VARS; foreach($ HTTP_POST_VARS as $ key => $ value){全局$$ key; $$ key = $ value; } foreach($ HTTP_GET_VARS as $ key => $ value){ global $$ key; $$ key = $ value; } } – Webiter 2011-12-20 15:19:10

+0

這看起來像是'register_globals'的解決方法,並且是一個巨大的安全漏洞。你應該真的解決這個問題。 – middus 2011-12-20 20:28:45

回答

3

爲什麼不只是谷歌allow HTTP_GET_VARS?第一個結果是非常有用的,甚至是谷歌的摘錄告訴你該怎麼做

http://php.net/manual/en/language.variables.predefined.php

從PHP 5.0.3長預定義的陣列,HTTP_GET_VARS得到了默認情況下禁用。爲實現向後兼容,你可以在php.ini使他們:

register_long_arrays =在

我sugget一個很大的警告在那裏像一個與 resister_globals。

無論如何..我不明白他們爲什麼總是這麼做。

+0

請務必記住,自PHP 5.4.0起,此功能已被移除(請參閱http://www.php.net/manual/en/ini.core.php#ini.register-long-arrays) – 2014-02-06 16:43:55