小預算改造推薦!銷售各式壁紙、壁布等產品 輕鬆變換空間氛圍,質感設計花色多 | 提供種類豐富的門窗樣式,氣密窗、採光罩、玻璃屋等 解決噪音困擾,享受寧靜 |
[教學]PHP5 變數傳遞和以前版本的不同 |
房東:呱呱 發表時間:2015-02-04 | [檢舉] |
三年前寫的 php4 程式, 在網址變數傳遞部份, 放在 php5 的版本卻不能執行, 連簡單的 echo $var; 都出不來, 那麼基礎的語法會改變嗎? 後來在這裡和這裡看到了原因, 原來是呼叫接收的方式變得不同 在PHP3和PHP4.1.0之前的版本,php.ini設定的register_globals = on,但在PHP5卻預設改成register_globals = off,這會導致$HTTP_GET_VARS等$HTTP_開頭的變數不能等同$_GET來使用,PHP4手冊也建議使用$_GET。要修正這個問題,最簡單的是把php.ini改成register_globals = on,但是很多時候寫程式的沒辦法碰到伺服器主機,所以可以用偷懶方法。例如在每個程式都會執行到的地方設: $HTTP_GET_VARS = $_GET; 或是認真一點,用Dreamweaver或者UltraEdit可以在多數檔案中搜尋與取代的功\能,把$HTTP_GET_VARS換成$_GET。 $HTTP_POST_VARS 改成 $_POST $HTTP_GET_VARS 改成 $_GET $HTTP_SERVER_VARS 改成 $_SERVER $HTTP_SESSION_VARS 改成 $_SESSION $_SERVER 變數由 Web 伺服器設定,或者直接與當前程式的執行環境相關聯者。舊陣列 $HTTP_SERVER_VARS,依然有效,但不建議使用。 比如:過去使用 $PHP_SELF,現在請改用 $_SERVER[PHP_SELF] $_GET 經由 HTTP GET 方法送至程式的變數。 舊陣列 $HTTP_GET_VARS,依然有效,但不建議使用。 比如:過去經由位址列傳送變數 act 的值,用 $act 即可取得,但現在要用 $_GET[\"act\"]、$_GET[\'act\'] 或 $_GET[act] 來取得 act 的值。 $_POST 表單經由 HTTP POST 方法送至程式的變數。 比如:過去經由表單傳送變數 value 的值,用 $value 即可取得, 但現在要改用 $_POST[\"value\"]、 $_POST[\'value\'] 或 $_POST[value] 來取得 vaule 的值。 $_COOKIE 經由 HTTP Cookies 方法送至程式的變數。 舊陣列 $HTTP_COOKIE_VARS,依然有效,但不建議使用。 $_FILES 經由 HTTP POST 上傳檔案時送至程式的變數。 舊陣列 $HTTP_POST_FILES,依然有效,但不建議使用。 假設表單中上傳檔案的變數名稱為 file,則: 上傳暫存檔:$_FILES[\'file\'][\'tmp_name\'] 檔案名稱為:$_FILES[\'file\'][\'name\'] 檔案大小為:$_FILES[\'file\'][\'size\'] 檔案型態為:$_FILES[\'file\'][\'type\'] $_ENV 執行環境送出至程式的變數。 舊陣列 $HTTP_ENV_VARS,依然有效,但不建議使用。 $_SESSION SESSION 變數。 舊陣列 $HTTP_SESSION_VARS,依然有效,但不建議使用。 比如:過去 SESSION 變數寫法為 $session_id 即可, 現在要改為 $_SESSION[session_id] $GLOBALS 包含一個引用指向每個目前程式的全域範圍內有效的變數。 該陣列的鍵值為全域變數的 名稱。(PHP 3 即開始支援 $GLOBALS 陣列) $_REQUEST 經由任何輸入機制送至程式的變數。所有包含在該陣列中的變數存在與否以及變數的順序,均按照 php.ini 中的 variables_order 配置來決定。 而且這樣子您對於變數的來源也會很清楚不會混亂啦^^ 嗯,如果你有用DreamweaverMX來寫php的程式的話,您應該也有注意到它所產生的語法也是用$HTTP_POST_VAR[\'var]...類似的寫法呢。$HTTP_POST_VARS 改成 $_POST $HTTP_GET_VARS 改成 $_GET $HTTP_SERVER_VARS 改成 $_SERVER $HTTP_SESSION_VARS 改成 $_SESSION $_SERVER 變數由 Web 伺服器設定,或者直接與當前程式的執行環境相關聯者。舊陣列 $HTTP_SERVER_VARS,依然有效,但不建議使用。 比如:過去使用 $PHP_SELF,現在請改用 $_SERVER[PHP_SELF] $_GET 經由 HTTP GET 方法送至程式的變數。 舊陣列 $HTTP_GET_VARS,依然有效,但不建議使用。 比如:過去經由位址列傳送變數 act 的值,用 $act 即可取得,但現在要用 $_GET[\"act\"]、$_GET[\'act\'] 或 $_GET[act] 來取得 act 的值。 $_POST 表單經由 HTTP POST 方法送至程式的變數。 比如:過去經由表單傳送變數 value 的值,用 $value 即可取得, 但現在要改用 $_POST[\"value\"]、 $_POST[\'value\'] 或 $_POST[value] 來取得 vaule 的值。 $_COOKIE 經由 HTTP Cookies 方法送至程式的變數。 舊陣列 $HTTP_COOKIE_VARS,依然有效,但不建議使用。 $_FILES 經由 HTTP POST 上傳檔案時送至程式的變數。 舊陣列 $HTTP_POST_FILES,依然有效,但不建議使用。 假設表單中上傳檔案的變數名稱為 file,則: 上傳暫存檔:$_FILES[\'file\'][\'tmp_name\'] 檔案名稱為:$_FILES[\'file\'][\'name\'] 檔案大小為:$_FILES[\'file\'][\'size\'] 檔案型態為:$_FILES[\'file\'][\'type\'] $_ENV 執行環境送出至程式的變數。 舊陣列 $HTTP_ENV_VARS,依然有效,但不建議使用。 $_SESSION SESSION 變數。 舊陣列 $HTTP_SESSION_VARS,依然有效,但不建議使用。 比如:過去 SESSION 變數寫法為 $session_id 即可, 現在要改為 $_SESSION[session_id] $GLOBALS 包含一個引用指向每個目前程式的全域範圍內有效的變數。 該陣列的鍵值為全域變數的 名稱。(PHP 3 即開始支援 $GLOBALS 陣列) $_REQUEST 經由任何輸入機制送至程式的變數。所有包含在該陣列中的變數存在與否以及變數的順序,均按照 php.ini 中的 variables_order 配置來決定。 |
清潔公司 清潔公司, 電話清潔, 清潔保養, 電腦清潔, 清潔消毒, 清潔服務, 消毒服務 油漆粉刷工程 優質油漆師傅,專業的油漆工程,免費諮詢刷油漆大小事,值得您信賴! DRAPERY窗簾設計 捲簾、窗簾布、窗簾布多種款式,免費丈量,挑戰市場超低價,為家輕鬆增添新意 |