明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線(xiàn)學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

在PHP4.2以后版本中使用表格數(shù)據(jù)

[摘要]正如文章標(biāo)題一樣,將會(huì)有越來(lái)越多關(guān)于PHP4.2以后版本出版和register_globals的討論。如果你的PHP程序以前工作正常,但是升級(jí)到PHP4.2以后出錯(cuò)的話(huà),請(qǐng)仔細(xì)閱讀以下內(nèi)容:以前,在...
正如文章標(biāo)題一樣,將會(huì)有越來(lái)越多關(guān)于PHP4.2以后版本出版和register_globals的討論。

如果你的PHP程序以前工作正常,但是升級(jí)到PHP4.2以后出錯(cuò)的話(huà),請(qǐng)仔細(xì)閱讀以下內(nèi)容:

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

當(dāng)升級(jí)到PHP4.2版本的時(shí)候出問(wèn)題了--在安裝的時(shí)候,PHP默認(rèn)設(shè)置了register_globals=off,這個(gè)register_globals是php.ini中設(shè)置是否允許直接使用變量上面例子中$variable的參數(shù),直到PHP4.2以前的版本,register_globals都是默認(rèn)為on,也就說(shuō)可以直接輸出變量。然而,在PHP4.2以后的版本中,為了防止?jié)撛诘牟话踩a的溢出,PHP開(kāi)發(fā)組已經(jīng)將register_globals默認(rèn)為off。

這就意味著以上的代碼不再有輸出。
[譯者注:通過(guò)一系列PHP函數(shù)的處理,也可以在register_globals=off的時(shí)候直接訪(fǎng)問(wèn)變量。]

實(shí)際上,使用以上表格的時(shí)候,我們可以通過(guò)幾種方式訪(fǎng)問(wèn)輸入的值。

因?yàn)槲覀兪褂昧薖OST方式來(lái)提交數(shù)據(jù),我們可以使用_POST數(shù)組,例如:
<?php
echo $_POST['variable'];
?>

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

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

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

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

cookies和會(huì)話(huà)(sessions)相應(yīng)的數(shù)組變量名稱(chēng)是_COOKIE和_SESSION,可以通過(guò)相同的方法來(lái)訪(fǎng)問(wèn)變量的值。還有_SERVER, _FILES, _ENV和GLOBALS數(shù)組,這些都是PHP的全局變量,可以用于PHP的任何地方,包括用在函數(shù)和類(lèi)中。

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

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

你不需要在函數(shù)中使用語(yǔ)句'global $_POST;',就可以直接使用這個(gè)全局變量了。

更多的內(nèi)容,請(qǐng)參考PHP在線(xiàn)手冊(cè):
http://www.php.net/manual/en/language.variables.predefined.php