技術討論區 > PHP程式設計討論區
防止機器人灌水
alishaqoo:
你示範的方法似乎是在單一頁submit使用
那如果是POST到另外一頁的話呢?
Darkhero:
--- 引述: "alishaqoo" ---你示範的方法似乎是在單一頁submit使用
那如果是POST到另外一頁的話呢?
--- 引用結尾 ---
應該是在接收端利用 verify 就可以了...
ricky:
--- 引述: "alishaqoo" ---你示範的方法似乎是在單一頁submit使用
那如果是POST到另外一頁的話呢?
--- 引用結尾 ---
要POST到哪一頁其實都沒差
只要呼叫Verify去檢驗post的Key就行了
由於沒有使用session來存放key
我採用了md5這種單向演算法
原理是這樣
--- 代碼: ---
$Time=sprintf("%x",time());
$ID=md5($Time.$this->EncodeKey);
$this->VerifyKey=$Time.$ID.md5($ID.$this->EncodeKey);
--- 程式碼結尾 ---
EncodeKey是一個你要永久保存的"密碼"(別給人知道)
Time是一個時間戳記,用來判別這個驗證碼是否還在時效內
由於md5是一種單向的加密演算法
加上別人沒有你的EncodeKey,就無法由驗證碼(VerifyKey)推得
你只需要在你要驗證的那個網頁
$EncodeKey中帶入之前您保留的EncodeKey就行了
至於第二的參數由於你只要檢驗而不是要產生Javascript就可以不需帶入
$RA=new RobotAway($EncodeKey);
micmic3:
嗯..那用 crypt 也可以有同樣效果
chehui:
code 好像是 PHP5 以上才能用?
如果要改成 PHP4 可以用的話要怎麼修改啊 @@
導覽
[0] 文章列表
[#] 下頁
[*] 上頁
前往完整版本