php頁間傳值的6種方法:
1、PHP4以後獲取傳值的方法
1、PHP4以後獲取傳值的方法
1、PHP4以後獲取傳值的方法
,所以下面我也主要介紹這幾種。 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;
?>
PHP extract() 函數從陣列中把變數匯入到目前的符號表中。對於陣列中的每個元素,鍵名用於變數名,鍵值用於變數值。第二個參數 type 用來指定當某個變數已經存在,而陣列中又有同名元素時,extract() 函數如何處理這樣的衝突。
語法:
extract(array,extract_rules,prefix)
使用方法:if(!empty($_POST)) extract($_POST);
echo $dopost;
?>
在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); }