|
以前做了個(gè)購(gòu)物網(wǎng)站的PHP程序,但前不久將PHP從4.0.6升到4.2.0后再一運(yùn)行那程序就面目全非了(慘相啊.....:) 不過(guò)最終問(wèn)題還是解決了,最近有人也碰到了相同的問(wèn)題來(lái)問(wèn)我,所以我干脆寫出來(lái)吧。
我碰到的出錯(cuò)主要問(wèn)題在PHP.INI中的配置參數(shù)register_globals=off
此項(xiàng)設(shè)off后PHP的程序就不會(huì)自動(dòng)從Cookie,Session及頁(yè)面地址"?"號(hào)后的參數(shù)中得到變量的值了,也不會(huì)自動(dòng)接收f(shuō)orm表單所傳的值,之所以默認(rèn)這樣做是為了防止變量中毒(variable poisoning),PHP以前版本這一項(xiàng)不是默認(rèn)off的所以沒(méi)出問(wèn)題。
解決方法是: 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"中問(wèn)號(hào)后面所跟的變量值 echo $HTTP_SERVER_VARS['REMOTE_ADDR'];//得到對(duì)方IP地址 echo $HTTP_POST_FILES[''];//取得用表單傳過(guò)來(lái)的文件 ?>
希望大家在今后寫代碼時(shí)盡量用如上的完整寫法(等出錯(cuò)后再改代碼那可是勞民傷財(cái)啊),因?yàn)樯厦娴哪欠N寫法無(wú)論是在register_globals設(shè)為on時(shí)還是off時(shí)都不會(huì)出錯(cuò),且安全性更高。
|
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!