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