以前做了個購物網(wǎng)站的PHP程序,但前不久將PHP從4.0.6升到4.2.0后再一運行那程序就面目全非了(慘相啊.....:) 不過最終問題還是解決了,最近有人也碰到了相同的問題來問我,所以我干脆寫出來吧。
我碰到的出錯主要問題在PHP.INI中的配置參數(shù)register_globals=off
此項設(shè)off后PHP的程序就不會自動從Cookie,Session及頁面地址"?"號后的參數(shù)中得到變量的值了,也不會自動接收form表單所傳的值,之所以默認(rèn)這樣做是為了防止變量中毒(variable poisoning),PHP以前版本這一項不是默認(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"中問號后面所跟的變量值 echo $HTTP_SERVER_VARS['REMOTE_ADDR'];//得到對方IP地址 echo $HTTP_POST_FILES[''];//取得用表單傳過來的文件 ?>
希望大家在今后寫代碼時盡量用如上的完整寫法(等出錯后再改代碼那可是勞民傷財啊),因為上面的那種寫法無論是在register_globals設(shè)為on時還是off時都不會出錯,且安全性更高。
|