HTML表單

與我們平時填寫的紙質表單一樣,HTML表單用于搜集不同類型的用戶輸入。
表單是一個包含表單元素的區域,表單元素是允許用戶在表單中(比如:文本域、下拉列表、單選框、復選框等)輸入信息的元素。

demo:

<form action="#" method="get">
        <label for="input_name">用戶名</label>
        <input type="text" id="input_name" name="name">
        <br/>
        <label for="input_password">密碼</label>
        <input type="password" id="input_password" name="password">
        <br/>
        <button>提交</button>
</form>

form標簽里面有兩個重要的屬性:action和method

  • action是表單提交的地址;
  • method表示表單提交的方式,get或者post;

get和post的區別

  • get方式會將數據放在URL中。
    1. 使用?分隔url和參數;
    2. & 分隔參數;
    3. url的長度有限制,所以傳遞的數據不能太多;
  • post方式會將傳輸的數據放在http正文。
操作方式 數據位置 明文密文 數據安全 長度限制 應用場景
GET http包頭 明文 不安全 長度較小 查詢數據
POST http正文 可明可密 安全 支持大數據傳輸 修改數據

總結:查詢數據,使用GET;修改、傳遞數據使用POST;安全性高、傳遞較慢的使用POST,高速、傳遞數據少、不要求安全性的使用GET。

form

form標簽時表單的外殼,主要有四個屬性

  1. action:表單提交的地址;
  2. method:表單提交的方式;
  3. target:在何處打開action;
  4. enctype
    • application/x-www-form-urlencoded:在發送前編碼所有字符(默認);
    • text/plain:空格轉換成" + "加號,但不對特殊字符編碼;
    • multipart/form-data:使用包含文件上傳控件的表單時,必須使用該值;

text

默認的文本輸入框,默認不能換行。例:

<label for="username">用戶名</label>
<input type="text" name="username" id="username">
text

password

頁面不會以明文的形式展示的輸入框,自動以小圓點顯示。

<label for="password">密碼</label>
<input type="password" name="password" id="password">
password

checkbox

多選框,value值需要手動設置,同一組使用設置相同的name屬性標識;

    <label>愛好</label>
    <br>
    <input type="checkbox" name="hobby" value="read" id="read">
    <label for="read">閱讀</label>
    <input type="checkbox" name="hobby" value="music" id="music">
    <label for="music">音樂</label>
    <input type="checkbox" name="hobby" value="basketball" id="basketball">
    <label for="basketball">籃球</label>
checkbox

radio

單選框,和checkbox類似,同意組別的radio使用相同的name屬性;但是只能選中一個。

    <label>性別:</label>
    <input type="radio" name="gender" id="male">
    <label for="male">男</label>
    <input type="radio" name="gender" id="female">
    <label for="female">女</label>
radio

file

打開文件選擇對話框

  • accept屬性, 只能選中對應的文件。
<input type="file" name="open_file" accept="image/png">
file

select

下拉選擇框,使用selected確認默認顯示的標簽元素

     <select name="city" id="choose_city">
        <option value="shanghai">上海</option>
        <option value="beijing">北京</option>
        <option value="guangzhou">廣州</option>
    </select>
select

textarea

多行文本

<textarea name="article" id="article_1" cols="30" rows="10"></textarea>
textarea

hidden

hidden隱藏用戶看不見的參數,可以被form提交到服務器。這個標簽可以做一些很酷的事情,比如避免csrf攻擊;

<input type="hidden" name="hidden_value" value="tom">

button、submit、reset

    <input type="reset" value="清空"> <!--  清空表單的輸入項 -->
    <input type="submit" value="提交"> <!-- 提交表單按鈕 -->

作業5

  1. 在input里,name有什么作用?
  • 作為可與服務器交互數據的HTML元素的服務器端的標示。例如:
    使用get方式傳遞數據時的url地址:
www.xxx.com?username=tom&password=123456
<!-- 其中,username和password就是input中的name屬性值。 -->
  • 將radio和checkbox等標簽內容分組。

  1. radio如何分組
    給radio設置相同的name
    <label>性別:</label>
    <input type="radio" name="gender" id="male">
    <label for="male">男</label>
    <input type="radio" name="gender" id="female">
    <label for="female">女</label>

  1. placeholder屬性有什么作用?
    w3school給的定義和解釋如下:

屬性提供可描述輸入字段預期值的提示信息(hint)

最直觀的感受是,輸入框或者其他類型的表單展現會有提示信息填充在表單中,并且輸入框獲得焦點后會自動消失。


  1. CSRF是什么?如何防止?
    SRF全名是Cross-site request forgery,中文名稱是跨站請求偽造。通過偽造用戶請求,獲取網站信息的操作。
    預防措施:
    1. 驗證Referer;
    2. 使用驗證碼;
    3. 增加token驗證
      • GET請求, token 將附在請求地址之后,這樣 URL 就變成 http://url?csrftoken=tokenvalue
      • POST 要在 form 的最后加上 <input type="hidden" name="csrftoken" value="tokenvalue"/>,這樣就把token以參數的形式加入請求了。

參見:CSRF 攻擊是什么?如何防范?


  1. type=hidden隱藏域有什么作用? 舉例說明
    hidden隱藏域可以將某些不想要讓用戶看見的屬性藏起來,也可以用來防范CSRF攻擊。
    在hidden中隱藏需要校驗的token,form提交時會自動將hidden中的內容也提交到服務器。這樣我們就能在后臺校驗token是否正確,從而檢查是不是CSRF攻擊了。
    再有就是隱藏屬性,比如頁面登錄的用戶id是1,每次發送請求都要檢查用戶的id,但是又不想被用戶看到這個隱藏的屬性,就使用hidden把id這個屬性當成普通屬性值藏起來。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,572評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,071評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,409評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,569評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,360評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,895評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,979評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,123評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,643評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,559評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,742評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,250評論 5 356
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,981評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,363評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,622評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,354評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,707評論 2 370