首頁 > PHP > register_globals於PHP6後不支援之排除法

register_globals於PHP6後不支援之排除法

2010年11月17日 發表評論 閱讀評論

在最近升級PHP至5.3後,發現都會有一個警告

Warning: Directive register_globals is deprecated in PHP 5.3 and greater in Unknown on line 0

去查了一下才知,原來PHP 中最具爭議的變化就是從 PHP 4.2.0 版開始配置檔中 register_globals 的預設值從 on 改為 off 了,而在5.3版本後就會顯示警告,但還是能開啟使用,但在PHP 6 之後就會全面停用。

哈~因為有register_globals,所以小弟覺得各家程式語言之中,PHP最強大,因為程式隨便寫都能執行~^^||
也可以設定成不用接參數,到了下一頁自動會轉成變數,這對開發者來說是省了不少功夫,不過也是因為如此,所以程式就不夠嚴謹,而且還會有安全性的問題,所以還是乖乖使用比較正統的方式寫CODE 吧 ~><~

註:如果想知道為何會不安全,請看以下連結說明:

除了 register_globals之外,當然也還有幾個參數也準備廢除,如下:

register_long_arrays
magic_quotes_gpc

magic_quotes_gpc這參數也頂棒的~可以不用去管是不是要加反斜線~唉~這也是安全性的考量要拿掉嗎? 怪的~去查了一下,拿掉主要因素不一樣啦~~是因為會影響程式造成可移移植性低、效能問題及容易造成困惑,詳細請看以下的文章:

不過這些參數,舊程式蠻都有介由他們進行自動轉換,沒了程式不就要大改了..呵~~好在還有偷吃步的方式,在 register_globals=Off的情況下,還是可以用以下程式碼達到同等效果。

<?php
if (!ini_get('register_globals'))
{
   extract($_POST);
   extract($_GET);
   extract($_SERVER);
   extract($_FILES);
   extract($_ENV);
   extract($_COOKIE);
   if ( isset($_SESSION) )
   {
       extract($_SESSION);
   }
}
?>

這樣只要加到會include的共用頁這樣就升級程式支援該參數被關掉了~^^
而magic_quotes_gpc被關掉也有解法,有興趣的人可以看剛剛上面那個連結,只是沒這個好改了!!

Be Sociable, Share!
Categories: PHP Tags: ,
  1. 目前尚無任何的評論。
  1. 目前尚無任何 trackbacks 和 pingbacks。

*