成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

PHP頁面傳值的6種獲取方法(PHP學習筆記)

2010-08-28 10:54:46來源:西部e網作者:

初學PHP,以前使用ASP沒有這些傳值的這么多說法,更不存在PHP版本兼容的問題,但是PHP中遇到了。在網上有不少朋友遇到過PHP傳值的問題,大都是因為看了老PHP版本的教程但用著新版本的PHP引起的,這里icech邊學邊記錄,整理了幾種PHP傳值的方法,就作為學習筆記了,也希望新學PHP的朋友少走彎路。

1、PHP4以后獲取傳值的方法

一般在頁面中傳值常見的是POST、GET和COOKIE幾種,所以下面我也主要介紹這幾種。PHP4以后都采用的是$_POST、$_GET等數組來獲取網頁傳值。在PHP3.0及以下版本都是用的是$HTTP_POST_VARS、$HTTP_GET_VARS等數組,具體代碼如下
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這些數組讀取。在舊版本的PHP中,還可以使用如$dopost的方法直接獲取傳值,這種方法比較簡潔,在后面的幾種獲取網頁傳值的方法中,其實icech都是圍繞著如何能使用$dopost來獲取網頁傳值的。

3、修改PHP.ini文件的配置

還有一個問題是為什么PHP3和PHP4及其以后會不兼容呢?其實有一個很重要的原因是,在PHP4以后,PHP.ini文件中的register_globals被默認設置為Off了。所以造成以前使用$dopost這種方法直接獲取網頁傳值不能使用了。

簡單的方法來查看一下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函數

import_request_variables函數的作用就是將GET、POST、Cookie變量導入到全局作用域中,如果你禁止了register_globals,但又想用到一些全局變量,則此函數很有用。
語法:bool import_request_variables(string $types[, string $prefix])
第一個參數可以為g、p或者c,就是GET、POST、COOKIE變量的頭一個字母,意思也很明確;
第二個參數是導入后的變量前綴,可以隨意寫;
簡單的例子:
import_request_variables("p","p_");
echo $p_dopost;
?>
HTML部分參照方法1的,獲取的是值為dopost輸入框變量。

5、使用extract函數

PHP extract() 函數從數組中把變量導入到當前的符號表中。對于數組中的每個元素,鍵名用于變量名,鍵值用于變量值。第二個參數 type 用于指定當某個變量已經存在,而數組中又有同名元素時,extract() 函數如何對待這樣的沖突。
語法:extract(array,extract_rules,prefix)
使用方法:
if(!empty($_POST)) extract($_POST);
echo $dopost;
?>
這種方法很簡單吧?也很實用。

6、dedecms里面使用的方法

在dede中,事先判斷了register_globals的值,如果是Off就調用下面的程序,如果是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頁面中,后面獲取網頁傳值的時候只需要使用就可以了。

以上就是icech整理的6種方法,轉載請注明來源(weste.net)和作者名,謝謝!

關鍵詞:PHP

贊助商鏈接:

主站蜘蛛池模板: 阿拉尔市| 牙克石市| 名山县| 方山县| 义乌市| 格尔木市| 山阴县| 台安县| 西青区| 鄄城县| 图们市| 常宁市| 沙湾县| 天镇县| 贵德县| 正阳县| 册亨县| 卢湾区| 儋州市| 南投县| 平陆县| 六枝特区| 五峰| 浦江县| 长岛县| 临武县| 汶上县| 徐州市| 道真| 昔阳县| 黔西县| 漳州市| 阿合奇县| 志丹县| 松江区| 左贡县| 白沙| 彭泽县| 镇坪县| 绥中县| 建平县|