2013-02-24 24 views
-1

我已經通過Stack Overflow搜索了搜索欄,只有4個帖子指出這些是不好的東西打開。爲什麼Superglobals這麼壞的東西打開?

沒有完整的原因,爲什麼?

所以我張貼這個問題找到了以下工作:

  1. 爲什麼這些這麼糟糕的事是什麼?他們也打開服務器的風險是什麼?

  2. 爲什麼PHP中的超全球衛星仍然如此退縮?

  3. 它們可以用於什麼?

+1

你的意思是「register_globals」? – 2013-02-24 15:34:27

+1

您也可以嘗試使用[Google](http://www.google.com/search?q=Why+are+Superglobals+bad+thing)搜索 – Havelock 2013-02-24 15:35:12

+0

您的意思是先閱讀您的'$ GLOBALS'變量,然後所有變量都放入了一些虛擬變量示例'$ ALLVARS',然後設置'unset($ GLOBALS)'來防止直接執行'$ GLOBALS'?只能通過用戶定義的變量讀取'$ GLOBALS'數據? – 2013-02-24 15:37:56

回答

3

Superglobals壞的,他們總是打開上。沒有它們,您將無法訪問諸如$_GET$_POST之類的內容。

我懷疑你是在談論Register Globals,它們在PHP 5.3中被棄用,並在PHP 5.4中被刪除。他們毫不含糊。他們讓任何人在你的代碼中實例化任意的全局變量。有很多信息都是爲​​了說明爲什麼它們不好,直到在文檔中包含他們自己的頁面。

1

register_globals全部自己不是問題。

它的組合:

  • 執行的所有代碼在全球範圍內

  • 決不初始化變量

  • 有那麼隨機變量從外部輸入(register_globals的)發生。

不幸的是,這是常見的情況,以及它們是如何在PHP3/PHP4時代使用的。這就是爲什麼過度概括的meme「register_globals不好」實際上是正確的。

您可以在啓用它們的情況下編寫完美的代碼,但這是一個不必要的陷阱。

相關問題