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

將 PHP 從 4.0.6 升到 4.2.1 的注意事項(xiàng)

[摘要]以前做了個(gè)購(gòu)物網(wǎng)站的PHP程序,但前不久將PHP從4.0.6升到4.2.0后再一運(yùn)行那程序就面目全非了(慘相啊.....:) 不過最終問題還是解決了,最近有人也碰到了相同的問題來(lái)問我,所以我干脆寫出來(lái)吧。 我碰到的出錯(cuò)主要問題在PHP.INI中的配置參數(shù)register_globals=off 此...
以前做了個(gè)購(gòu)物網(wǎng)站的PHP程序,但前不久將PHP從4.0.6升到4.2.0后再一運(yùn)行那程序就面目全非了(慘相啊.....:)
不過最終問題還是解決了,最近有人也碰到了相同的問題來(lái)問我,所以我干脆寫出來(lái)吧。

我碰到的出錯(cuò)主要問題在PHP.INI中的配置參數(shù)register_globals=off

此項(xiàng)設(shè)off后PHP的程序就不會(huì)自動(dòng)從Cookie,Session及頁(yè)面地址"?"號(hào)后的參數(shù)中得到變量的值了,也不會(huì)自動(dòng)接收form表單所傳的值,之所以默認(rèn)這樣做是為了防止變量中毒(variable poisoning),PHP以前版本這一項(xiàng)不是默認(rèn)off的所以沒出問題。

解決方法是:
echo $HTTP_COOKIE_VARS['variable'];//得到cookie的值
echo $HTTP_SESSION_VARS['variable'];//得到session的值
echo $HTTP_POST_VARS['variable'];//得到表單所傳的值-----相應(yīng)表單框名
echo $HTTP_GET_VARS['variable'];//得到"xxx.php?variable=123456"中問號(hào)后面所跟的變量值
echo $HTTP_SERVER_VARS['REMOTE_ADDR'];//得到對(duì)方IP地址
echo $HTTP_POST_FILES[''];//取得用表單傳過來(lái)的文件
?>

希望大家在今后寫代碼時(shí)盡量用如上的完整寫法(等出錯(cuò)后再改代碼那可是勞民傷財(cái)啊),因?yàn)樯厦娴哪欠N寫法無(wú)論是在register_globals設(shè)為on時(shí)還是off時(shí)都不會(huì)出錯(cuò),且安全性更高。