PHP5 預設 register_globals = off
所以 PHP4 的舊程式會造成許多問題,
最常見的就是PHP程式當中有很多可以取得網頁資料的方法,舉例來說:
$_GET、$HTTP_GET_VARS:這個陣列儲存著從網址「?」之後的變數名稱與資料
$_POST、$HTTP_POST_VARS:這個陣列儲存著表單用POST過來的資料
$_SESSION、$HTTP_SESSION_VARS:這個陣列儲存著session變數
$_COOKIE、$HTTP_COOKIE_VARS:這個陣列儲存著cookie變數
$_FILES:這個陣列儲存著從表單上傳的檔案
$_SERVER、$HTTP_SERVER_VARS:這個陣列儲存著伺服器與用戶端瀏覽器相關的環境變數
在PHP3和PHP4.1.0之前的版本,php.ini 設定的 register_globals = on,但在PHP5卻預設改成 register_globals = off,這會導致如 $HTTP_GET_VARS 等 $HTTP_ 開頭的變數不能等同$_GET來使用,PHP4手冊也建議使用 $_GET。
要修正這個問題,最簡單的是把 php.ini 改成 register_globals = on, 不過基於安全的考量, 我們實在不建議.
最好是用 Dreamweaver 或者文字編輯器可以在多數檔案中搜尋與取代的功能,
把 $HTTP_GET_VARS 換成 $_GET,
把 $HTTP_POST_VARS 換成 $_POST,
把 $HTTP_SESSION_VARS 換成 $_SESSION ,
把 $HTTP_COOKIE_VARS 換成 $_COOKIE ,
把 $HTTP_SERVER_VARS 換成 $_SERVER.