国产欧美日韩第一页|日本一二三不卡视频|在线精品小视频,亚洲第一免费播放区,metcn人体亚洲一区,亚洲精品午夜视频

register_globals使用詳解

2017-03-30 16:31:37 13374

register_globalsphp.ini里的一個(gè)配置,這個(gè)配置影響到php如何接收傳遞過來的參數(shù),如果你的問題是:為什么我的表單無法傳遞數(shù)據(jù)?為什么我的程序無法得到傳遞過來的變量?等等,那么你需要仔細(xì)的閱讀以下的內(nèi)容。 

register_globals的值可以設(shè)置為: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> 

當(dāng)register_globals=Off的時(shí)候,下一個(gè)程序接收的時(shí)候應(yīng)該用$_GET['user_name']$_GET['user_pass']來接受傳遞過來的值。(注:當(dāng)<form>method屬性為post的時(shí)候應(yīng)該用$_POST['user_name']$_POST['user_pass'])。

當(dāng)register_globals=On的時(shí)候,下一個(gè)程序可以直接使用$user_name$user_pass來接受值。 

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

那我們?yōu)槭裁匆褂?/span>Off呢?原因有2

1、php以后的新版本默認(rèn)都用Off,雖然你可以設(shè)置它為On,但是當(dāng)你無法控制服務(wù)器的時(shí)候,你的代碼的兼容性就成為一個(gè)大問題,所以,你最好從現(xiàn)在就開始用Off的風(fēng)格開始編程。

2、這里有兩篇文章介紹為什么要Off而不用On 

http://www.tjdsmy.cn/forum/gshowflat.php?Cat=&Board=php3&Number=292803&page=0&view=collapsed&sb=5&o=all&fpart= 

http://www.tjdsmy.cn/manual/en/security.registerglobals.php 

現(xiàn)在還有一個(gè)問題就是,以前用On風(fēng)格寫的大量腳本怎么辦? 

如果你以前的腳本規(guī)劃得好,有個(gè)公共包含文件,比如config.inc.php一類的文件,在這個(gè)文件里加上以下的代碼來模擬一下(這個(gè)代碼不保證100%可以解決你的問題,因?yàn)槲覜]有大量測試,但是我覺得效果不錯(cuò))。另外,這個(gè)帖子里的解決方法也可以參考一下(http://www.tjdsmy.cn/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傳遞過來的數(shù)據(jù),也影響到sessioncookie,對應(yīng)的,得到sessioncookie的方式應(yīng)該為:$_SESSION[]、$_COOKIE。同時(shí)對于session的處理也有一些改變,比如,session_register()沒有必要而且失效,具體的變化,請查看php manual里的Session handling functions

$_REQUEST中間的內(nèi)容實(shí)際上還是來源于$_GET $_POST $_COOKIE,缺點(diǎn)是無法判斷變量到底來自于get post 還是cookie,對要求比較嚴(yán)格的場合不適用。

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.


提交成功!非常感謝您的反饋,我們會(huì)繼續(xù)努力做到更好!

這條文檔是否有幫助解決問題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問題: