前端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...