国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP中register_globals參數為OFF和ON的區別(register_globals 使用詳解)

2024-05-04 23:15:38
字體:
來源:轉載
供稿:網友

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

復制代碼 代碼如下:


<form action="URL">
<input type="text">
<input type="password">
<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 



現在還有一個問題就是,以前用On風格寫的大量腳本怎么辦?
如果你以前的腳本規劃得好,有個公共包含文件,比如config.inc.php一類的文件,在這個文件里加上以下的代碼來模擬一下。
代碼:

復制代碼 代碼如下:


<?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,對要求比較嚴格的場合不適用。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 营山县| 南川市| 长武县| 盘锦市| 保山市| 洛宁县| 兴文县| 香格里拉县| 邛崃市| 温泉县| 宁蒗| 安平县| 新巴尔虎右旗| 南投市| 交口县| 武清区| 汕头市| 东莞市| 杭州市| 手游| 老河口市| 湖南省| 江油市| 葫芦岛市| 西峡县| 双江| 任丘市| 鄂州市| 大安市| 南昌市| 钦州市| 永福县| 项城市| 桂阳县| 沙坪坝区| 惠水县| 武义县| 白朗县| 遂川县| 宜阳县| 大丰市|