在網(wǎng)上有不少朋友遇到過PHP傳值的問題,大都是因為看了老PHP版本的教程但用著新版本的PHP引起的,這里小編邊學(xué)邊記錄,整理了幾種PHP傳值的方法,就作為學(xué)習(xí)筆記了,也希望新學(xué)PHP的朋友少走彎路。
1、PHP4以后獲取傳值的方法
一般在頁面中傳值常見的是POST、GET和COOKIE幾種,所以下面我也主要介紹這幾種。PHP4以后都采用的是$_POST、$_GET等數(shù)組來獲取網(wǎng)頁傳值。在PHP3.0及以下版本都是用的是$HTTP_POST_VARS、$HTTP_GET_VARS等數(shù)組,具體代碼如下
echo $_POST[\'dopost\']; ?> < form action="weste_net.php" method="post" name=\'form1\' id="form1"> < input type="text" name="dopost" value="hello weste.net!" /> < input type="submit" name="weste" value="提交" /> < /form>
2、舊版本PHP3以前的獲取傳值方法
上面說過了,可以使用$HTTP_POST_VARS、$HTTP_GET_VARS、$HTTP_COOKIE_VARS這些數(shù)組讀取。在舊版本的PHP中,還可以使用如$dopost的方法直接獲取傳值,這種方法比較簡潔,在后面的幾種獲取網(wǎng)頁傳值的方法中,其實icech都是圍繞著如何能使用$dopost來獲取網(wǎng)頁傳值的。
3、修改PHP.ini文件的配置
還有一個問題是為什么PHP3和PHP4及其以后會不兼容呢?其實有一個很重要的原因是,在PHP4以后,PHP.ini文件中的register_globals被默認設(shè)置為Off了。所以造成以前使用$dopost這種方法直接獲取網(wǎng)頁傳值不能使用了。
簡單的方法來查看一下register_globals的值
echo \'register_globals = \' . ini_get(\'register_globals\');
?>
如果register_globals=Off,顯示register_globals = 或者 register_globals = 0
如果register_globals=On,顯示register_globals = 1
手動修改register_globals為On,提交的表單中如果包含一個名為“dopost”的變量,那么在PHP中就可以使用$dopost來獲取該變量。但是如果使用的是虛擬主機,想要修改php.ini文件還是比較困難的。這里只是提供一個方法。
4、使用import_request_variables函數(shù)
import_request_variables函數(shù)的作用就是將GET、POST、Cookie變量導(dǎo)入到全局作用域中,如果你禁止了register_globals,但又想用到一些全局變量,則此函數(shù)很有用。
語法:bool import_request_variables(string $types[, string $prefix])
第一個參數(shù)可以為g、p或者c,就是GET、POST、COOKIE變量的頭一個字母,意思也很明確;
第二個參數(shù)是導(dǎo)入后的變量前綴,可以隨意寫;
簡單的例子:
import_request_variables("p","p_");
echo $p_dopost;
?>
HTML部分參照方法1的,獲取的是值為dopost輸入框變量。
5、使用extract函數(shù)
PHP extract() 函數(shù)從數(shù)組中把變量導(dǎo)入到當(dāng)前的符號表中。對于數(shù)組中的每個元素,鍵名用于變量名,鍵值用于變量值。第二個參數(shù) type 用于指定當(dāng)某個變量已經(jīng)存在,而數(shù)組中又有同名元素時,extract() 函數(shù)如何對待這樣的沖突。
語法:extract(array,extract_rules,prefix)
使用方法:
if(!empty($_POST)) extract($_POST);
echo $dopost;
?>
這種方法很簡單吧?也很實用。
6、dedecms里面使用的方法
在dede中,事先判斷了register_globals的值,如果是Off就調(diào)用下面的程序,如果是On,那么就可以直接用了。具體的代碼如下,放在了common.inc.php文件中
//檢查和注冊外部提交的變量 foreach($_REQUEST as $_k=>$_v) { if( strlen($_k)>0 && eregi(\'^(cfg_|GLOBALS)\',$_k) && !isset($_COOKIE[$_k]) ) { exit(\'Request var not allow!\'); } } function _RunMagicQuotes(&$svar) { if(!get_magic_quotes_gpc()) { if( is_array($svar) ) { foreach($svar as $_k => $_v) $svar[$_k] = _RunMagicQuotes($_v); } else { $svar = addslashes($svar); } } return $svar; } foreach(Array(\'_GET\',\'_POST\',\'_COOKIE\') as $_request) { foreach($$_request as $_k => $_v) ${$_k} = _RunMagicQuotes($_v); }
把以上代碼放到一個公用的php頁面中,后面獲取網(wǎng)頁傳值的時候只需要使用就可以了。
當(dāng)前名稱:PHP頁面?zhèn)髦档?種獲取方法
網(wǎng)址分享:http://chinadenli.net/article6/cjjpig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、企業(yè)建站、網(wǎng)站改版、定制網(wǎng)站、外貿(mào)建站、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)