結合高機能系統家具與室內設計,專業團隊免費丈量規劃
為您打造夢想居家空間!
平價窗簾提供各大品牌冷氣維修,各型號不冷
不開機,各式問題排除,來電速洽

首頁  •  j2h 論壇 • 程式設計討論     • 

[php] register_globals on 的風險

房東:阿文
發表時間:2011-01-04
[檢舉]


最近發現關於register_globals在版裡經常被問起,所以特別專門就這個問題進行一下講解。

register_globals是php.ini裡的一個配置,這個配置影響到php如何接收傳遞過來的參數,如果你的問題是:為什麼我的表單無法傳遞數據?為什麼我的程序無法得到傳遞過來的變量?等等,那麼你需要仔細的閱\讀以下的內容。

register_globals的值可以設置為:On或者Off,我們舉一段代碼來分別描述它們的不同。




CODE:
;
;
;
;
;

當 register_globals=Off的時候,下一個程序接收的時候應該用$_GET[\'user_name\'] 和$_GET[\'user_pass\']來接受傳遞過來的值。(註:當
;的method屬性為post的時候應該 用$_POST[\'user_name\']和$_POST[\'user_pass\'])

當register_globals=On的時候,下一個程序可以直接使用$user_name和$user_pass來接受值。

顧名思義,register_globals的意思就是註冊為全局變量,所以當On的時候,傳遞過來的值會被直接的註冊為全局變量直接使用,而Off的時 候,我們需要到特定的數組裡去得到它。所以,碰到上邊那些無法得到值的問題的朋友應該首先檢查一下你的register_globals的設置和你獲取值 的方法是否匹配。(查看可以用phpinfo()函數或者直接查看php.ini)

那我們為什麼要使用Off呢?原因有2:
1、php以後的新版本默認都用Off,雖然你可以設置它為On,但是當你無法控制服務器的時候,你的代碼的兼容性就成為一個大問題,所以,你最好從現在就開始用Off的風格開始編程
2、這裡有兩篇文章介紹為什麼要Off而不用On
http://www.linuxforum.net/forum/gshowflat.php?Cat=&Board=php3&Number=292803&page=0&view=collapsed&sb=5&o=all&fpart=
http://www.php.net/manual/en/security.registerglobals.php

現在還有一個問題就是,以前用On風格寫的大量腳本怎麼辦?
如果你以前的腳本規劃得好,有個公共包含文件,比如config.inc.php一類的文件,在這個文件裡加上以下的代碼來模擬一下(這個代碼不保證 100%可以解決你的問題,因為我沒有大量測試,但是我覺得效果不錯)。另外,這個帖子裡的解決方法也可以參考一下 (http://www.chinaunix.net/forum/viewtopic.php?t=159284)。




CODE:
if ( !ini_get(\'register_globals\') )
{
extract($_POST);
extract($_GET);
extract($_SERVER);
extract($_FILES);
extract($_ENV);
extract($_COOKIE);

if ( isset($_SESSION) )
{
extract($_SESSION);
}
}
?>;





  • 贊助網站       

    廣利不動產-新板特區指名度最高、值得您信賴的好房仲
    您的托付,廣利用心為您服務
    廣利不動產-板橋在地生根最實在--新板特區指名度最高、值得您信賴的好房仲
    完整房訊,房屋、店面熱門精選物件,廣利不動產 優質仲介,房屋租賃、買賣資訊透明,交易真安心!



  •  共 0 人回應

    姓名:
    佈告內容: