Web表單主要用來在網頁中傳送資料到伺服器,經過程式處理中,將使用者所需要的資訊再傳遞給客戶端的瀏覽器上。這樣就形成了一個瀏覽者和網站之間的一個互動。
一、表單的提交方式
GET 提交或者GET()方法是將表單內容附加在URL後面的傳送。在位址列上的將會顯示”“URL+使用者傳遞的資料”組成一個大URL。URL和表單元素直接使用逗號“?”隔開的。多個表單元素用“&”隔開,每個表單元素的格式是name=value。注意大URL的長度限制在1M字元以內,資料量太大資料將會被截斷,從而導致意外的處理結果。
POST 提交或者POST()方法是將將表單的資訊作為一個數據塊傳送到伺服器,在瀏覽器的位址列不顯示提交的資訊。提交方式有表單的method屬性,預設是GET()方法。表單的action是指向處理該表單頁面的URL(相對位置或者絕對位置)
二、表單元素
一個表單裡面就是表單元素。表單元素主要有輸入域標記()、選擇域標記(
1、輸入域標記
由type屬性控制輸入域的型別,name是輸入域的名稱。
下面介紹幾個type屬性
text:文字框屬性,可以指定value(預設值),name(文字框的名稱),size(文字框的寬度),maxlength(文字框的最大輸入值)
password:密碼域。使用者輸入的字元被替換成“*”
file:檔案域。檔案上傳的使用。
image:影象域。可以用在提交按鈕位置上的圖片,具有按鈕的功能。
radio:單選按鈕。相同 name 代表在同一組,只能選擇一項,checked 屬性用來設定預設選中。
checkbox:複選框。允許選擇多個選擇項,checked 屬性用來設定預設選中。
submit:提交按鈕。提交表單內容到伺服器。
reset:重置和清除表單內容。
button:普通按鈕。可以激發提交表單的動作,一般配合javascript指令碼進行表單處理。
hidden:隱藏域。在表單中隱藏方式提交變數值。對於使用者是不可見的。提交的時候會一起隨其他表單傳送。
2、選擇域標記
name表示選擇域的名稱,size表示列表的行數,value 表示選項值,multiple表示該列表可以選擇多項。預設只能選擇一項。select 表示預設被選中
3、文字域標記
name表示文字域的名稱,cols表示文字域的列數,rows表示文字域的行數,value表示文字域的預設值。warp使用者設定顯示和送出時的換行方式。warp=”off” 表示不自動換行,warp=”hard” 表示自動硬回車換行,換行標記一同傳送到伺服器,輸出的時候也會被換行。warp=”soft”表示自動軟回車換行,換行標記不會被髮送到伺服器,輸出時候仍然為一列。
三、PHP引數傳遞的常用方法
php引數傳遞常用的方法有:$_POST[]、$_GET[]、$_SESSION[],分別使用者獲取表單,URL與session變數的值。
1、$_POST[] 全域性變數
可以獲取到POST()方法提交過來的表單元素的值。
格式:$_POST[name]
name 為表單元素的name
<?php//省略建立表單,文字框的name為username,method 是 POST$username = $_POST[“username”];?>
注意:在有些php版本中,可以直接$username就可以指定表單的值。這是可以透過設定php。ini的register_globals=ON/OFF。如果是ON,可以直接寫成$username,反之則不可以。這裡不建議設定為ON,推薦使用register_globals=OFF。
2、$_GET[] 全域性變數
可以獲取到GET()方法提交過來的表單元素的值。
格式:$_GET[name]
name 為表單元素的name
<?php//省略建立表單,文字框的name為username ,method是 GET$username = $_GET[“username”];?>
不管是$_GET[]還是$_POST[]獲取表單元素的值,表單元素的名稱是區別字母大小寫的。疏忽了大小寫,程式允許有可能取不到值或者彈出錯誤的提示資訊。
3、$_SESSION[] 變數
$_SESSION[] 可以獲取表單元素的值。
格式:$_SESSION[name]
name為表單元素的name。
<?php//省略建立表單,文字框的name為username$username = $_SESSION[“username”];?>
該方法獲取到的變數值,儲存之後任何頁面都可以使用,這種方式很耗費系統資源,是要慎重使用的。
四、在WEB頁面中嵌入PHP指令碼
1、在html頁面中新增php指令碼
·web頁面中隨時新增<?php 。。。 ?> 標記,這兩個標記中間的文字都會被解釋為php,標記之外的任何文字都將被認為是普通的html
2、對錶單元素的value賦值
只需將所需要賦值的資料直接新增到value資料中。
<?php$val = “123456”; //定義一個$val 的值?>” />
五、對URL傳遞的引數進行編碼/解碼
1、對URL傳遞的引數進行編碼。
前面我們說道GET()方法提交的就是一個長URL,表單資料都在URL裡。
如:
http://url?username=admin&password=123456
很明顯這樣的傳遞會將引數暴露問題,所以必須對URL傳遞的引數進行編碼。
語法格式:string urlencode(string str);
實現了字串str的url編碼。比如引數中帶有空格,進行編碼後空格會被換成%20。
”> 我是中文的字串 瀏覽器位址列:http://localhost/index。php?id=%CE%D2%CA%C7%D6%D0%CE%C4%B5%C4%D7%D6%B7%FB%B4%AE檢視原始碼: 我是中文的字串
2、對URL傳遞的引數進行解碼
對已經URL編碼過的字串,在$_GET[]方法獲取的時候則還需要進行解碼才能知道原來的值。
語法格式:strIng urldecode(string str);
實現了字串在URL編碼後的str字串進行解碼。
”> 我是中文的字串 <?php$str = $_GET[“id”];$str2 = urldecode($str);echo “解碼後Id:”。$str2;?>瀏覽器位址列:http://localhost/index。php?id=%CE%D2%CA%C7%D6%D0%CE%C4%B5%C4%D7%D6%B7%FB%B4%AE檢視原始碼: 我是中文的字串 頁面輸出:我是中文的字串解碼後Id:我是中文的字串
明天我們來看看php和javascript的互動。