我一直在學習PHP,我已經使用了一個Web主機帳戶來測試我的腳本,默認情況下它們的register_globals開啓。我知道這是不安全的,但是在測試示例代碼時我沒有打擾過。
現在我正在爲一個非營利組織的小型現場網站工作,我是其成員,他們使用的主機默認情況下已關閉register_globals,因爲它應該是。
所以,現在我的問題。我已經習慣了這個工作(使用register_globals):
假設我們正在加載index.php?pID = 1。 index.php文件的代碼將包含該行:
if($pID==1) include('content1.php');
請注意,我用$ PID,而不是$ _GET [ 'pID的']和我沒有分配$ _GET [ 'pID的']到我的代碼中的任何地方$ pID。無論如何,這工作得很好。所以(當然)我想知道是否因爲register_globals關閉,這是突然不工作,當我在我的orgs主機上使用相同的代碼?
如果是這樣,是否有解決方法來再次創建超全球魔術,還是必須手動將所有$ _GET變量賦值給我自己的全局變量?
接受register_globals是在PHP中排名前5的最終奪冠Moronically Stupid Design Decisions,並且它的刪除和禁用是一件** GOOD **的事情。修復你的代碼在沒有register_globals的情況下工作,因爲它是**從不返回**,並且你不應該嘗試重新創建它。 –
手動分配$ _GET變量有什麼不好?無論如何,你幾乎總是會想要對它們進行驗證。 –