初學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)
}function _runmagicquotes(&$svar)
else
}return $svar;
}foreach(array('_get','_post','_cookie') as $_request)
= _runmagicquotes($_v);
}把以上**放到乙個公用的php頁面中,後面獲取網頁傳值的時候只需要使用就可以了。
來自:
PHP頁面傳值的6種獲取方法
php頁面傳值的6種獲取方法 1 php4以後獲取傳值的方法 一般在頁面中傳值常見的是post get和cookie幾種,所以下面我也主要介紹這幾種。php4以後都採用的是 post get等陣列來獲取網頁傳值。在php3.0及以下版本都是用的是 http post vars http get va...
php頁面間傳值的6種方法
1 php4以後獲取傳值的方法 一般在頁面中傳值常見的是post get和cookie幾種,所以下面我也主要介紹這幾種。php4以後都採用的是 post get等陣列來獲取網頁傳值。在php3.0及以下版本都是用的是 http post vars http get vars等陣列,具體 如下 ech...
php頁面之間傳值 PHP頁面間傳值的幾種方法
方法一 require once page a a hello page b require once a.php echo a.world 訪問b.php會得到 hello world!方法二 通過頁面跳轉時攜帶引數傳值 page a a world 點我跳到b.php page b echo h...