PHP頁面傳值的6種獲取方法


PHP頁面傳值的6種獲取方法
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頁面中,后面獲取網頁傳值的時候只需要使用就可以了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM