fbpx

《WordPress免外掛》考考留言機器人,自己手動加入簡單的計算式驗証碼

相信有不少人跟站長一樣被留言機器人的垃圾留言搞的苦不堪言,雖然努力的擋下來,但始終沒停過,也有人用了圖形驗證碼來解決了這樣的問題,但你也可能和站長一樣覺得圖形碼跟版面很不搭,那就來參考看看站長手動加入數學計算驗證,不用外掛,要自行手動加入程式碼就可以囉!

就像圖上一樣,這可不是外掛哦,而是自己手動加入一個簡單的算式來達成留言驗證碼的功能,對於一般的留言機器人都可以擋下來,除非你遇到高級機器人可能就失效了,不過也是極少數啦~

站長一天下來也是幾10封垃圾留言,因為Email的關係,不只WP後台要清理,連Email也要刪,真是夠煩的啦,但是站長對於圖形驗證碼影響版面實在不愛,所以我們就自己來加個計算式考考留言機器人吧!

如何手動加入呢?

我們一共要修改2個地方

第一、打開部落格根目錄底下的wp-comments-post.php

大約在6X行的地方,在Email驗證函數的下方加入以下語法:

if ( !$user->ID ) {

$a = trim($_POST[a]);

$b = trim($_POST[b]);

$sub = trim($_POST[sub]);

if((($a+$b)!=$sub)|| empty($sub)){

wp_die( __('算錯了吼~再算一次吧!') );

}

}

插入位置可參考下圖(這段語法是用來定義計算式,不只加法,減乘除都能改)

第二、打開佈景下的comments.php

在你網站輸入的語法下面插入以下語法:

<p><? $a=rand(0,10); $b=rand(0,10); ?>

<input type="text" name="sub" tabindex="3" id="sub"  size="22"><input type="hidden" name="a" value="<?=$a?>" /><input type="hidden" name="b" value="<?=$b?>" /> <label for="sub"><span class="red"><?=$a?>+<?=$b?>=?</span>(必填)</label></p>

如果你的comments有像下圖一樣用到<span class=”xx “>則將<p>取代為你comments

裡的<span=”xx “>,而在宣告表格的語法裡如有用到像下圖 class=” xx“,則可以在語法

入,例如修改後如下,這樣就會和你佈景的表格一模一樣囉!

<span class="row"><? $a=rand(0,10); $b=rand(0,10); ?>

<input type="text" name="sub" tabindex="3" id="sub" class="textfield" size="22"><input type="hidden" name="a" value="<?=$a?>" /><input type="hidden" name="b" value="<?=$b?>" /> <label for="sub"><span class="red"><?=$a?>+<?=$b?>=?</span>(必填)</label></span>

如此一來就有一個簡單的驗證功能啦。

如何修改數字範圍?

如果你怕訪客算術不好,那就來改改運算式的數字範圍吧~在語法中有這一段宣告式,只要將(0,10)修改為你想要的範圍就可以囉,左邊的是第一個數字範圍,右邊是第二個

<? $a=rand(0,10); $b=rand(0,10); ?>

例如,範圍前面改為1~5,後面數字改為6~10

<? $a=rand(1,5); $b=rand(6,10); ?>

如何修改運算式?

只要將二段語法中的+改成你要做的運算法則就可以囉!

乘:* 、除:/ 、減:-

就是這麼簡單,趕緊去試試吧~

if ( !$user->ID ) {

$a = trim($_POST[a]);

$b = trim($_POST[b]);

$sub = trim($_POST[sub]);

if((($a+$b)!=$sub)|| empty($sub)){

wp_die( __('算錯了吼~再算一次吧!') );

}

}

<p><? $a=rand(0,10); $b=rand(0,10); ?>

<input type="text" name="sub" tabindex="3" id="sub"  size="22"><input type="hidden" name="a" value="<?=$a?>" /><input type="hidden" name="b" value="<?=$b?>" /> <label for="sub"><span class="red"><?=$a?>+<?=$b?>=?</span>(必填)</label></p>

你可能對這些內容也有興趣

阿湯 作者:阿湯

對電腦 & 網路資訊充滿興趣與熱情、瘋了似的每日堅持發文,「阿湯」這個名字是由湯姆克魯斯而來的,雖然我沒有他帥氣,也不會演電影,但我會寫文章....

更多關於的文章》

15 個留言

  1. Avatar 小奎表示:

    版大
    為什麼我做了驗證可以正常顯示
    不過就是沒有用
    (不用打驗證也能留言)
    :as45 :as10

    阿湯說:

    不曉得是不是wp版本已經更新過,我改天再來研究其它語法看看

  2. Avatar john表示:

    如果是一般的自己的網站…不是部落格…也可以用這個方式嗎?

    阿湯說:

    寫法是大同小異,這只是php簡易的判斷

  3. Avatar David Blue表示:

    這是不錯啦! 不過升級的時候不是又要重來= =”

    這樣子阿~ 會不會用外掛好一點呢?! :as23

    阿湯說:

    哈,這是給不愛外掛的人用的啦~~

  4. Avatar Sammy表示:

    您好,
    我照您說的將拿掉之後,

    還是會變成像下面這樣耶!

    而且兩個輸入的方塊都沒有出現?

    麻煩您有空幫我看看吧!

    阿湯說:

    你把你佈景的comment.php

    寄給我看看可以嗎

  5. Avatar Sammy表示:

    我想請問一下,
    我寫成這個樣子
    http://140.116.71.76/~sammy/code.jpg
    可是我的blog下面的留言區,卻是出現如下面這個樣子,
    http://140.116.71.76/~sammy/MyBlog.jpg
    請問是有那裡寫錯嗎?

    謝謝您!

    阿湯說:

    <div class=”form-input”></div>拿掉看看

  6. Avatar 炮爺表示:

    圖片太大那可以設定啊…

    原本寬度是180左右,我改為90~

    並將4個字驗證碼改成1個字,

    還有字體原本的elephant.ttf我改成Yahoo.ttf~

    雅虎字體 :as24

    阿湯說:

    我的佈景跟一些驗證程式的有相衝

    打算找一天來重建..

  7. Avatar 森林表示:

    我也安裝好囉~~最近垃圾信件爆多= =

    每天都有100多封 讓我刪不完~~

    煩都煩死

    阿湯說:

    有人看的懂耶,真感動 :as51

  8. Avatar 炮爺表示:

    跟看不懂沒關係

    是懶的懂XD

    用SI CAPTCHA就夠了~ XD 還能設定字型 好玩~

    阿湯說:

    呵~我有玩過

    只是我覺得那個圖太大張就沒用啦@@

  9. Avatar Arno Ruan表示:

    機器人確實很討厭…垃圾留言很煩…
    不但會佔據資料庫空間,當累積越多、越嚴重時,甚至把資料庫效能拖垮。ˊˋ

    諾也是用數字相加來防SPAM。^_^
    目前數量:Akismet 保護您的網站,已拒絕 1,058 則垃圾。

    阿湯說:

    垃圾留言不防真的不行..

  10. Avatar JIE=介表示:

    哈 謝拉 我去改改看^^

    阿湯說:

    加油

    你行低…

  11. Avatar frank表示:

    中文”必填”變亂碼..javascript:void(0); (表情好像不太對..)

    阿湯說:

    表情有出什麼問題嗎??

    必填那個修改要存為UTF-8的格式

  12. Avatar JIE=介表示:

    如果要訪客輸入相同的字當驗證碼的話
    哪要怎麼設定阿

    阿湯說:

    真的要改的話就是設一個a就可以了

    然後讓a=多少..如果你稍微php應該會改@@..

  13. Avatar Ausir表示:

    耶~

    怎麼驗證碼又不見了??

    阿湯說:

    還在呀,如果有留言過cookies

    記錄還在就不必再輸入一次

  14. Avatar 天仙表示:

    我就是那個看不太懂的人…. :as20

    阿湯說:

    沒關係..你用不到 :as22

  15. Avatar 小綠表示:

    來當驗證碼的第一號留言者
    幫你推文了,這個很實用喔 :as49

    阿湯說:

    不過想必有人會看不懂的啦~~

發表留言 »

姓名(*)
信箱(*)