超級全域性變數名詞解釋 php超級全域性變數

2021-10-13 11:15:57 字數 4455 閱讀 8851

前端html部分:

測試 $_get

服務端接受部分:

echo "study " . $_get['subject'] . " at " . $_get['web'];

php  $_files

可以從客戶計算機向遠端伺服器上傳檔案。

第乙個引數是表單的 input name,第二個下標可以是 "name", "type", "size", "tmp_name" 或 "error"。就像這樣:

$_files["file"]["name"] - 被上傳檔案的名稱

$_files["file"]["type"] - 被上傳檔案的型別

$_files["file"]["size"] - 被上傳檔案的大小,以位元組計

$_files["file"]["tmp_name"] - 儲存在伺服器的檔案的臨時副本的名稱

$_files["file"]["error"] - 由檔案上傳導致的錯誤**

這是一種非常簡單檔案上傳方式。基於安全方面的考慮,您應當增加有關什麼使用者有權上傳檔案的限制。

建立乙個檔案上傳表單

enctype="multipart/form-data">

filename:

請留意如下有關此表單的資訊:

標籤的 enctype 屬性規定了在提交表單時要使用哪種內容型別。在表單需要二進位制資料時,比如檔案內容,請使用 "multipart/form-data"。

標籤的 type="file" 屬性規定了應該把輸入作為檔案來處理。舉例來說,當在瀏覽器中預覽時,會看到輸入框旁邊有乙個瀏覽按鈕。

注釋:允許使用者上傳檔案是乙個巨大的安全風險。請僅僅允許可信的使用者執行檔案上傳操作。

建立上傳指令碼

if ($_files["file"]["error"] > 0)

echo "error: " . $_files["file"]["error"] . "

";else

echo "upload: " . $_files["file"]["name"] . "

";echo "type: " . $_files["file"]["type"] . "

";echo "size: " . ($_files["file"]["size"] / 1024) . " kb

";echo "stored in: " . $_files["file"]["tmp_name"];

上傳限制

在這個指令碼中,我們增加了對檔案上傳的限制。使用者只能上傳 .gif 或 .jpeg 檔案,檔案大小必須小於 20 kb:

if ((($_files["file"]["type"] == "image/gif")

|| ($_files["file"]["type"] == "image/jpeg")

|| ($_files["file"]["type"] == "image/pjpeg"))

&& ($_files["file"]["size"] < 20000))

if ($_files["file"]["error"] > 0)

echo "error: " . $_files["file"]["error"] . "

";else

echo "upload: " . $_files["file"]["name"] . "

";echo "type: " . $_files["file"]["type"] . "

";echo "size: " . ($_files["file"]["size"] / 1024) . " kb

";echo "stored in: " . $_files["file"]["tmp_name"];

else

echo "invalid file";

注釋:對於 ie,識別 jpg 檔案的型別必須是 pjpeg,對於 firefox,必須是 jpeg。

儲存被上傳的檔案

上面的例子在伺服器的 php 臨時資料夾建立了乙個被上傳檔案的臨時副本。

這個臨時的複製檔案會在指令碼結束時消失。要儲存被上傳的檔案,我們需要把它拷貝到另外的位置:

if ((($_files["file"]["type"] == "image/gif")

|| ($_files["file"]["type"] == "image/jpeg")

|| ($_files["file"]["type"] == "image/pjpeg"))

&& ($_files["file"]["size"] < 20000))

if ($_files["file"]["error"] > 0)

echo "return code: " . $_files["file"]["error"] . "

";else

echo "upload: " . $_files["file"]["name"] . "

";echo "type: " . $_files["file"]["type"] . "

";echo "size: " . ($_files["file"]["size"] / 1024) . " kb

";echo "temp file: " . $_files["file"]["tmp_name"] . "

";if (file_exists("upload/" . $_files["file"]["name"]))

echo $_files["file"]["name"] . " already exists. ";

else

move_uploaded_file($_files["file"]["tmp_name"],

"upload/" . $_files["file"]["name"]);

echo "stored in: " . "upload/" . $_files["file"]["name"];

else

echo "invalid file";

上面的指令碼檢測了是否已存在此檔案,如果不存在,則把檔案拷貝到指定的資料夾。

注釋:這個例子把檔案儲存到了名為 "upload" 的新資料夾。

php $_env

是乙個包含伺服器端環境變數的陣列。

通過環境方式傳遞給當前指令碼的變數的陣列。

這些變數被從 php 解析器的執行環境匯入到 php 的全域性命名空間。很多是由支援 php 執行的 shell 提供的,並且不同的系統很可能執行著不同種類的 shell,所以不可能有乙份確定的列表。請檢視你的 shell 文件來獲取定義的環境變數列表。

其他環境變數包含了 cgi 變數,而不管 php 是以伺服器模組還是 cgi 處理器的方式執行。

當你想看看乙個變數中究竟有什麼東西在裡面時,我所知道的方式有三種:

1、var_dump($_env);

2、print_r($_env);

3、foreach($_env as $key=>$val)

這三種方式中,第一種我覺得最方便而且輸出的內容格式清晰。

由於$_env變數是取決於伺服器的環境變數的,從不同的伺服器上獲取的$_env變數列印出的結果可能是完全不同的。所以無法像$_server 那樣列出完整的列表。以下是$_env 陣列包含的比較通用的元素:

有時候,$_env會為空,其原因通常是php的配置檔案php.ini的配置項為:variables_order = "gpcs"。要想讓$_env的值不為空,那麼variables_order的值應該加上乙個大寫字母「e」,即:variables_order = "egpcs"。

上述配置表示了php接受的外部變數**及順序,egpcs是environment、get、post、cookies、server的縮寫。如果variables_order 的配置中缺少e ,則php 無法接受環境變數,那麼$_env 也就為空了。

由於開啟$_env,即variables_order = "egpcs"會導致一些效能損失,按php官方的說法是,在生產環境中,不推薦使用。他們更推薦使用getenv (string $varname)函式來獲取environment中的值,而這點需要在程式設計時就注意到。如果程式設計時用了$_env而variables_order中又沒有

配置為variables_order = "egpcs",則程式執行時可能會報錯。

php $_cookie  和  $_session在後面會詳細介紹

全域性變數就完了,這裡再總結下:

$_post 用於表單提交,伺服器端使用requist.form 獲取提交的資料

$_get 同樣可使用者傳值,一般會直接跟在url後面,可以看到,相對post方式的安全性較低。伺服器端使用 requist.querystring 獲取變數的值。

$_request 可以獲取以post方法和get方法提交的資料,但是速度比較慢

$_server  由web伺服器建立,用來獲取頁面標題,路徑和指令碼位置等資訊的陣列。有些伺服器會忽略一些資訊

$globals 超級全域性變數組,可以訪問你建立的任意變數

$_files  使用者接收處理客戶端傳來的檔案及

$_env  同getenv(引數)都是用於獲取環境變數的

超級全域性變數名詞解釋 重要的PHP超級全域性變數總結

php有9個預定義變數陣列,分別總結如下 1 server server超級全域性變數包含由web伺服器建立的資訊,它提供了伺服器和客戶配置及當前請求環境的有關資訊。根據伺服器不同,server中的變數值和變數個數會有差別,不過一般都可以找到cgi1.1規範中定義的變數。其中包括 server ht...

php超級全域性變數

php用了那麼久一些基礎東西並不是很了解,今天開始就陸陸續續的學習一下。php中超級全域性變數 globals 所有全域性變數陣列 server 伺服器環境變數陣列 get get傳遞給指令碼的變數陣列 post post傳給指令碼的變數陣列 cookie cookie變數陣列 files 上傳檔案...

php超級全域性變數

是php系統中自帶的變數,在指令碼的全部作用域都可以使用。超級全域性變數列表 1.globals是php的乙個超級全域性變數組,在乙個php指令碼的全部作用域中都可以訪問。變數的名字就是陣列的鍵。2.server是乙個包含了諸如頭資訊 header 路徑 path 以及指令碼位置 script lo...