PHP處理表單數據


重溫表單

表單是使用<form></form>標簽來創建表單,分別表示表單開始和結束的位置。

表單結構:

<form
name = "form_name" method ="method" action="url" enctype="value" target="target_win" id="id">
.......
</form>

常用屬性解釋:

  • name :表單名稱
  • id: 表單id號
  • method:提交方法,取值有兩種GET和POST.區別是GET方法通過url傳輸,因為很多瀏覽器限制url長度,因此GET傳輸數據有大小限制,不得超過8192個字符,而且內容會顯示在url中。POST方法適合傳輸大量數據,而且不通過url更安全。
  • action:指定數據提交到那個位置,可以是絕對的url也可以是相對的url.如果為空,提交到當前文件。
  • enctype:設置表單資料的編碼格式,詳細內容見后面處理部分
  • target:制定目標窗口和目標幀(沒用到不太懂)

表單元素

輸入標記域

<form>
<input name="field_name" type="type_name">
</form>

參數name指的是輸入域的名字,type指的是輸入域的類型
輸入域類型如下:

  • text: 文本框
    <input name="user" type="text" value="this is a text" size="20" maxlength="100"
    name為文本框名稱,value為文本框默認值,size指文本框的寬度,maxlength指文本框最大輸入字符數

  • password:密碼域
    <input name="password" type="password" value="123456" size="20" maxlength="20"
    特殊的文本框吧,輸入字符顯示出來是*號,起到保密作用

  • file:文件域
    <input name="file" type="file" enctype="multipart/form-data" size="20" maxlength="200">
    文件域用來上傳文件,打開一個模式窗口選擇文件。將文件通過表單上傳到服務器,注意表單屬性enctype要選擇"multipart/form-data"才能實現上傳,具體類型再補充

  • radio:單選按鈕
    <input name="sex" type="radio" value="1" checked>男<input name="sex" type="radio" value="0">女
    用於設置一組選項,用戶只能選擇一項cheked屬性來設置單選按鈕的默認值

  • checkbox:復選框

<input name="checkbox" type="checkbox" value="1" checked>封面
<input name="checkbox" type="checkbox" value="1" checked>正文內容
<input name="checkbox" type="checkbox" value="0">價格

復選框,允許用戶選擇多個選項,checked屬性用來設置該復選框默認值

  • Submit:提交
    <input type="submit" name="Submit" value="提交">
    將表單的內容提交到服務器端

  • button:按鈕
    <input type="button" name="Submit" value="button"按鈕
    可以激發提交表單的操作,可以在用戶需要修改表單的時候恢復表單初始狀態。普通按鈕一般是配合JavaScript進行表單處理

選擇域標記

選擇域標記<select>和<option>可以建立一個列表或者菜單.如果數量過多還會自動出現滾動條

<select name="spec" id="spec">
<option value="0" selected>aaa</option>
<option value="0" selected>bbb</option>
<option value="0" selected>bbb</option>
<option value="0" selected>bbb</option>

就是平時看到的菜單欄選項

文本域標記

其中參數name表示文本域的名稱;row表示文本域的行數;cols表示文本域的列數;value表示文本域的默認值;wrap用於設定顯示和送出時的換行的方式,值為off表示不自動換行;值為hard表示自動按回車鍵換行;換行標記一同被送到服務器,輸出時也會換行;值為soft表示自動按回車鍵換行,換行標記不會被送到服務器,輸出時仍然為一列。

<textarea name="name" rows=a cols=b value="value" wrap="value">
.......
.......
.......
</textarea>

PHP接收數據

表單的action指定了接收POST方法或者GET方法的php腳本,PHP腳本讀取接受的數據的方法是用超全局變量$_GET和$_POST。接收數據之后,是展示,還是存進數據庫,或者進行別的處理,就隨意寫了。

看一個示例就知道怎么處理了,表單假如是這個樣子的

<form action="process.php" methond="POST">
<input name="username" value="ycd">
<input name="psd" type="password" value="123456">
<button>OK</button>
</form>
<?php
$username=$_POST['username'];
$password=$_POST['psd'];

echo 'USER:'.$username." PASSWORD:".$password;

特殊情況:發送文件

如果要發送文件,這在HTML表單中是個特殊的情況,因為文件一般被認為是二進制數據,而且HTTP是個文本協議,所以對於處理二進制數據有特別要求。

enctype屬性

enctype屬性可以改變HTTP請求頭中的Content-Type字段,詳細內容可以參考HTTP協議的內容。這個字段的作用是告訴服務器發送的數據類型。Content-Type的默認值是application/x-www-form-urlencoded,意思是”這份數據已經被編碼為URL格式“.

如果想發送文件,得做兩件事情

  • 因為文件內容不能放到url里,所以得把method改成POST
  • 將enctype屬性的值改成multipart/form-data,這樣數據被分割成多個部分,成功發送。

示例代碼

<form method="POST" enctype="multipart/form-data">
<input type="file" name="FILE">
<button>Send</button>
</form>

PS:要注意安全性問題,主要是這幾種類,XSS、CSRF、SQL注入、HTTP頭部注入和郵件注入。后續填坑吧


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM