2012-03-14 134 views
0

我需要一個javascript代碼來防止bot提交表單。 但我需要在JavaScript客戶端代碼工作就像CAPTCHA但不調用服務器javascript代碼,以防止提交表單

謝謝

+0

[純JavaScript/jQuery/HTML驗證碼]的可能重複(http://stackoverflow.com/questions/3614467/pure-javascript-jquery-html-captcha) – 2012-03-14 11:32:05

+2

如果有人關閉JavaScript,該怎麼辦? – 2012-03-14 11:32:19

+0

Felix提到如果javascript被關閉,你會怎麼做?歡迎來到機器人:D – 2012-03-14 11:33:10

回答

1

這樣做

<h1>Type the result in the input box : 1+1</h1> 

<input id="sum" type="text"/> 

之前提交你檢查的值輸入是2,然後提交它。

爲了改進這種類型的代碼,你可以在h1中隨機創建這兩個值,並將它們保存到var中,並在提交前檢查輸入和sum是否相同。

3

最直接,最簡單的方法將是在飛行中添加或編輯表單數據當按鈕被實際點擊:

<input type="hidden" name="SubmittedByHuman" value="NO" /> 
<input type="submit" value="Submit me" onclick="this.form.elements['SubmittedByHuman'] = 'YES';" /> 

到這一點,在服務器端檢查表單元素叫值「 SubmittedByHuman「 - 如果它是」否「,則意味着繞過了提交按鈕 - 或者正如人們在評論中正確提到的那樣,用戶確實點擊了但已禁用了JavaScript。

1

我懷疑這是可能的,因爲機器人足夠複雜以繞過大多數事情。

請記住,機器人不打算在瀏覽器中打開網頁,然後按提交。它可能會掃描頁面尋找<form>,製作所有<input>字段的列表,然後執行包含每個字段所有數據的POST請求。

它不會運行任何JavaScript,或按任何按鈕。你必須做檢查服務器端。