對於表單元素,除了reset元素,只要有name與value都能提交
因為在我們印象中,只有能選擇的,能填空的,就是我們要提交的。但瀏覽器還提供一種機制,讓我們能讓除了使用者自己新增的東西外,還能偷偷地提交“額外”的東西。 這些搭順風車的東西,目前有三種,input[type=hidden],input[type=submit],input[type=image]
偷偷加的東西,目的是不讓使用者填這麼東西。比如某些報表,它是由多個表單組成,上一頁使用者提交的東西,下一頁還要使用者提交,此外還有驗證使用者合法性的令牌(token),也需要我們偷偷塞到表單裡面。
我們可以看一下下表。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
<!DOCTYPE html> <html> <head> <title>by 司徒正美</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <form url="/"> <fieldset><legend>hidden+submit</legend> <input type="hidden" name="aaa" value="eee"/> <input type="reset" name="test" value="ooo" > <input type="submit" name="submit" value="xxx"/> </fieldset> </form> <form url="/"> <fieldset><legend>hidden+image</legend> <input type="hidden" name="bbb" value="eee"/> <input type="reset" name="test" value="ooo" > <button type="button" name="ccc" value="ddd">btn</button> <input type="image" name="submit" value="yyy"/> </fieldset> </form> <form url="/"> <fieldset><legend>hidden+button</legend> <input type="hidden" name="ccc" value="eee"/> <input type="reset" name="test" value="ooo" > <button name="submit" value="zzz" >xxx</button> </fieldset> </form> <form url="/"> <fieldset><legend>hidden+reset</legend> <input type="hidden" name="ccc" value="eee"/> <input type="reset" name="submit" value="ooo" > </fieldset> </form> </body> </html> |
我們一一點選,就知道發現什麼回事了。
隱藏域就不用說了,它肯定會提交。
submit按扭會攜帶其自身的name,value提交到後臺,這樣我們就可以少寫一個隱藏域。
image按鈕這裡寫不怎麼規範,它其實還要一個src屬性,指定一個圖片,提交時,地址變成這樣的:
1 |
http://localhost:8383/avalon/newhtml.html?bbb=eee&submit.x=7&submit.y=8&submit=yyy |
image能提交你當時的點選位置,因此在早些年,可以防止機器人刷單刷評論!
如果button標籤不指定type值,那麼它會預設是submit,其效果與input[type=submit]相同!
reset按鈕不會提交,因此沒有反應。
此外,總結一下各種提交表單的方式:
- 點選input[type=submit]
- 點選input[type=image]
- 點選button[type=submit]
- 在文字域或密碼域等可以填空的表單元素內回車!