技術討論區 > PHP程式設計討論區

防止機器人灌水

<< < (2/6) > >>

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] 文章列表

[#] 下頁

[*] 上頁

前往完整版本