在PHP4.2以後版本中使用表格數據

- 中國WEB開發者網絡 (http://www.webasp.net)
-- 技術教程 (http://www.webasp.net/article/)
--- 在PHP4.2以後版本中使用表格數據 (http://www.webasp.net/article/13/12523.htm)
-- 作者:未知
-- 發佈日期: 2004-08-23
正如文章標題一樣,將會有越來越多關於PHP4.2以後版本出版和register_globals的討論。

如果你的PHP程序以前工作正常,但是升級到PHP4.2以後出錯的話,請仔細閱讀以下內容:

以前,在你的PHP中,可能有一個像下面表格:
<form action="page.php" method="post">
<input type="text" name="variable" />
<input type="submit">
</form>
而且,你可以像下面一樣簡單的訪問你的變量:
<?php
echo $variable;
?>

當升級到PHP4.2版本的時候出問題了--在安裝的時候,PHP默認設置了register_globals=off,這個register_globals是php.ini中設置是否允許直接使用變量上面例子中$variable的參數,直到PHP4.2以前的版本,register_globals都是默認為on,也就說可以直接輸出變量。然而,在PHP4.2以後的版本中,為了防止潛在的不安全代碼的溢出,PHP開發組已經將register_globals默認為off。

這就意味著以上的代碼不再有輸出。
[譯者註:通過一系列PHP函數的處理,也可以在register_globals=off的時候直接訪問變量。]

實際上,使用以上表格的時候,我們可以通過幾種方式訪問輸入的值。

因為我們使用了POST方式來提交數據,我們可以使用_POST數組,例如:
<?php
echo $_POST['variable'];
?>

或者,如果以上的表格通過GET方式提交,我們可以使用_GET數組:

<?php
echo $_GET['variable'];
?>

如果你出於某種因素不知道你使用了POST還是GET方式提交數據,你可以全部使用_REQUEST數組,例如:

<?php
echo $_REQUEST['variable'];
?>

cookies和會話(sessions)相應的數組變量名稱是_COOKIE和_SESSION,可以通過相同的方法來訪問變量的值。還有_SERVER, _FILES, _ENV和GLOBALS數組,這些都是PHP的全局變量,可以用於PHP的任何地方,包括用在函數和類中。

以下代碼也可以正常工作:

<?php
function printPost ()
{
foreach ( $_POST as $key => $value )
echo "$_POST[$key] => $value<br> ";
}
?>

你不需要在函數中使用語句'global $_POST;',就可以直接使用這個全局變量了。

更多的內容,請參考PHP在線手冊:
http://www.php.net/manual/en/language.variables.predefined.php


webasp.net