※ 引述《banana2014 (香蕉共和國)》之銘言:
: 大家好,
: 我想做一個讓使用者一定只能在我的網站上填寫表單的程式,亦即他不能將表單下載到
自
: 己的電腦裡頭然後填寫並提交,一定只能在我的網站上填寫,此目的是為了防止有心人
士
: 用這種下載表單的方式去大量提交類似廣告性質的內容,以致於伺服器收到大量的「垃
圾
: 」以及讓伺服器因大量提交的關係而耗費許多資源。
: 我想問的是:防止大量提交的方法除了使用CAPTCHA之外,還有沒有其他的方式? 而那
些
: 人除了使用「下載表單」的方式去大量提交廣告之外,還有沒有其他更高竿且非人為的
方
: 式去大量提交類似廣告性質的內容?
: 謝謝
: P.S. REMOTE_ADDR(IPv4,以下稱ip)是否具唯一性? 在同一時間裡面,有沒有可能在地
球
: 的另一端同時出現一個以上一模一樣的ip? 另外,在不同的時間點,有沒有可能兩部不
同
: 的電腦擁有相同的ip?
這2個問題根源就是網路概念不清,弄清觀念程式問題就小了。
下載表單?
當瀏覽器顯示表單時,表單就在用戶電腦裡了。
進一步說瀏覽器只是按 html 原始碼來呈現表單樣式(每個瀏覽器表單都不一樣)
而 php 也不管用戶端表單長怎樣?
php 只管該收到什麼。
所以問題1的核心在於,用戶這次傳過來的表單內容,是否是人輸入的?
有人要花時間亂寫,看一眼刪掉就好;
再不然檢查欄位格式,有錯誤自動處理。至於用程式跑的就要阻擋了。
怎麼擋?
1.確定你是人!
2.確定不是連續發送。
3.限制發送次數。
還有很多....
至於問題2: ip是否會同時2台電腦以上使用?
有種東西叫「分享器」聽過嗎?
因為 ip4 已經配完了?所以在辦公室、學校、家中都會看到 ip分享器,就是一堆人都使
用同個對外ip。
所以表單擋ip 可以嗎?當然可以,
只要用戶不是學校或公司,否則一人寫過,其他人都不用寫囉。
那麼分享器後面的電腦就分辨不出來了嗎?
用 cookie、session、hidden、head都可以輔助檢查。