一、PHP獲取表單各項數據 --- 與表單提交的方式有關
GET方式,格式:$_GET[「formelement」]
POST方式,格式:$_POST[「formelement」]
REQUEST方式,格式:$_REQUEST[「formelement」]php
二、表單中上傳文件的數據
數組:$_FILES["file_name"] //其中file_name表示表單file元素對應的名稱
包含error,name,type,size,tmp_name等數據項html
三、表單自己所在文件(HTML,PHP等)的數據
$_SERVER["HTTP_REFERER"]表示請求的文件信息,是URL地址,如http://localhost/login.html
能夠採用以下方式處理:
$uri=$_SERVER['HTTP_REFERER']; //沒法得到默認頁面index.html等形式的文件名稱
$arr=explode('/',$uri);//把字符串分割爲數組
也能夠將URL地址當作文件路徑,使用basename($_SERVER["HTTP_REFERER"])來得到請求文件名數組
四、表單處理文件(本文件)的信息
__FILE__得到文件的完整路徑;
$_SERVER['REQUEST_URI']和$_SERVER['PHP_SELF']得到文件名;服務器
注:單引號串和雙引號串在PHP中的處理是不相同的。
雙引號串中的內容(如變量,特殊字符)能夠被解釋並且替換,而單引號串中的內容總被認爲是普通字符。
$foo = 2;
echo "foo is $foo"; // 打印結果: foo is 2
echo 'foo is $foo'; // 打印結果: foo is $foo
echo "foo is $foo\n"; // 打印結果: foo is 2 (同時換行)
echo 'foo is $foo\n'; // 打印結果: foo is $foo\n
須要說明的是,在腳本中使用單引號串處理速度會更快,PHP語法分析器對單引號串的處理方式比較單純,而雙引號的處理因爲串內部也須要解析,所以更復雜,因此處理速度略慢。函數
示例:post
file1.html學習
--------------------------------------------------------------------------------------------------測試
<html><head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body bgcolor=#FFFFFF> <div id="bigbox" align="center" class="top"> <br /><h2>開心一刻<h2><br /> <hr> <b><h2 align="LEFT">第一次殺魚</h2></b> <div id="content" align="left"> 姐姐第一次殺魚,猶豫了半天也不敢下手。 過了一會,再去看時,只見她兩手握着魚,把魚按在水底,我問她要幹嗎?<br /> 她說:「等把它淹死了再殺……淹死了再殺!」 <br /></div> <hr> <form id="usercomments" method="post" action="./formdeal.php" align="left"> 簡評:<input id="mycomment" name="mycomment" type="text" size=100 ></input><br> 文件:<input id="myfile" name="myfile" type="file"></input> <input type="submit" id="submit" name="submit" value="提交" ></input> </form> </div> </body> </html>
--------------------------------------------------------------------------------------------------ui
formdeal.phpurl
--------------------------------------------------------------------------------------------------
<head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>處理頁面!</title> </head> <body> <?php /* * * Created on 2014-04-11 * * author:wenqing */ ?> <?php /******************** * 處理表單數據 ********************/ echo "<font size=5px>"; echo "<p>"; $comment=$_POST['mycomment']; //獲取表單數據 /** * empty()函數是用來測試變量是否已經配置: * 若變量不存在,則返回 TRUE; * 若變量存在且其值爲""、0、"0"、NULL、FALSE、array()以及無屬性對象,則返回 TURE; 實例: $value="0"; if(empty($value)){ echo "我是空值!"; } **/ //if(empty($comment)){ if($comment==""){ print("您沒有評論!"); }else{ print("您的評論是:".$comment); } echo "<br /></p>"; ?> <?php /******************** * 處理上傳文件 ********************/ echo "<p>"; if(empty($_FILES["myfile"])) print("您沒有上傳文件!"); else if(($_FILES["myfile"]["type"] == "text/plain") && ($_FILES["myfile"]["size"] < 20000)) { if ($_FILES["myfile"]["error"] > 0) echo "Return Code: " . $_FILES["myfile"]["error"] . "<br />"; else{ echo "Upload: " . $_FILES["myfile"]["name"] . "<br />"; echo "Type: " . $_FILES["myfile"]["type"] . "<br />"; echo "Size: " . ($_FILES["myfile"]["size"] / 1024) . " Kb<br />"; echo "Temp-file: " . $_FILES["myfile"]["tmp_name"] . "<br />"; if(file_exists("upload/" . $_FILES["myfile"]["name"])) echo $_FILES["myfile"]["name"] . " already exists. "; else{ move_uploaded_file($_FILES["myfile"]["tmp_name"], "upload/" . $_FILES["myfile"]["name"]); echo "Stored in: " . "upload/" . $_FILES["myfile"]["name"]; } } } echo "</p>"; ?> <?php /******************** * 處理頁面文件 ********************/ echo '<p>'; $servername=$_SERVER['SERVER_NAME']; $subpage=$_SERVER["HTTP_REFERER"]; // __FILE__ and $_SERVER['PHP_SELF'] achive same feature! $dealpage=$_SERVER["REQUEST_URI"]; $urlpath=substr($subpage,(7+strlen($servername))); echo "服務器名稱是:".$servername; echo '<br />'; echo "URL路徑是:".$urlpath; echo '<br />'; echo "提交表單的頁面是:".basename($subpage); echo '<br />'; echo "處理表單的頁面是:".$dealpage; echo '</p>'; echo "</font>"; ?> </body>
--------------------------------------------------------------------------------------------------
對於第三種處理頁面文件部分,有網上朋友說採用$_SERVER["HTTP_REFERER"]方式獲取不太可靠,提出在表單中加入Hidden屬性項來得到,對此我表示知識有限沒法解答,抱歉…
本文僅是學習筆記,用於本身複習參看,謹記之。