<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    linugb118--java space

    Java

    [轉]php register_globals使用詳解

    [PHP]-register_globals使用詳解
    2008年02月25日 星期一 20:12
    register_globals是php.ini里的一個配置,這個配置影響到php如何接收傳遞過來的參數,如果你的問題是:為什么我的表單無法傳遞數據?為什么我的程序無法得到傳遞過來的變量?等等,那么你需要仔細的閱讀以下的內容。 

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

    代碼: 

    <form name="frmTest" id="frmTest" action="URL"> 
    <input type="text" name="user_name" id="user_name"> 
    <input type="password" name="user_pass" id="user_pass"> 
    <input type="submit" value="login"> 
    </form> 



    當register_globals=Off的時候,下一個程序接收的時候應該用$_GET['user_name']和$_GET['user_pass']來接受傳遞過來的值。(注:當<form>的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)。 

    代碼: 

    <?php 
    if ( !ini_get('register_globals') ) 

    extract($_POST); 
    extract($_GET); 
    extract($_SERVER); 
    extract($_FILES); 
    extract($_ENV); 
    extract($_COOKIE); 

    if ( isset($_SESSION) ) 

    extract($_SESSION); 


    ?> 

    register_globals = Off的情況不僅僅影響到如何獲取從<form>、url傳遞過來的數據,也影響到session、cookie,對應的,得到session、cookie的方式應該為:$_SESSION[]、$_COOKIE。同時對于session的處理也有一些改變,比如,session_register()沒有必要而且失效,具體的變化,請查看php manual里的Session handling functions 

    $_REQUEST中間的內容實際上還是來源于$_GET $_POST $_COOKIE,缺點是無法判斷變量到底來自于get post 還是cookie,對要求比較嚴格的場合不適用。 
    php manual 寫到: 

    Variables provided to the script via the GET, POST, and COOKIE input mechanisms, and which therefore cannot be trusted. The presence and order of variable inclusion in this array is defined according to the PHP variables_order configuration directive.   

    posted on 2011-03-08 17:10 linugb118 閱讀(272) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    My Links

    Blog Stats

    常用鏈接

    留言簿(1)

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久免费精品一区二区| 亚洲GV天堂无码男同在线观看| 日韩在线观看视频免费| 国产精品嫩草影院免费| 色偷偷亚洲男人天堂| 国产91在线免费| 日韩大片在线永久免费观看网站| 又黄又爽的视频免费看| 免费无遮挡无遮羞在线看| 亚洲精品国产自在久久| 国产在线观看免费视频软件| 亚洲av永久无码制服河南实里| 久久国产精品免费专区| 亚洲特级aaaaaa毛片| 性短视频在线观看免费不卡流畅| 亚洲人成网站18禁止久久影院 | 亚洲国产精品无码久久九九| 男女猛烈激情xx00免费视频| 亚洲色成人WWW永久网站| 一个人免费日韩不卡视频| 亚洲国产日韩女人aaaaaa毛片在线| 成人免费午夜无码视频| 国产成人人综合亚洲欧美丁香花 | 一区二区三区AV高清免费波多| 成人亚洲性情网站WWW在线观看| 最近免费mv在线观看动漫| 亚洲婷婷天堂在线综合| 在线观看国产情趣免费视频| 一级毛片完整版免费播放一区| 亚洲日韩欧洲乱码AV夜夜摸| 日本高清在线免费| 免费在线观看亚洲| 亚洲高清在线播放| 国产麻豆免费观看91| 国产在线国偷精品免费看| 亚洲另类自拍丝袜第1页| 免费在线观看黄网站| 久久久久久国产精品免费免费男同| 亚洲人成77777在线观看网| 亚洲男人的天堂在线va拉文 | 好男人视频社区精品免费|