[WordPress] Contact Form 7 表單防止機器人發送垃圾郵件的技巧

本篇文章更新時間:2020/10/21
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣新台幣 贊助支持。


前陣子網站上一直都有機器人成功留言,也不是說沒用 Google reCAPTCHA,但神奇的事:沒效!

想說好吧,內建的功能無法抵擋就來增加點機器人攻擊的難度,讓網站行為與「普通 WordPress 搭配 Contact Form 7 的網站」不同就可以避開了。

研究一下 Contact Form 7(下略稱 CF7),把功能短碼繼承出來,改變前端呈現的作法。

程式碼如下:

function mxp_wpcf7_contact_form_tag_func($atts, $content = null, $code = '') {
    if (is_feed()) {
        return '

錯誤: 找不到符合條件的聯絡表單。

'; } $atts = shortcode_atts( array( 'id' => 0, 'title' => '', 'html_id' => '', 'html_name' => '', 'html_class' => '', 'output' => 'form', ), $atts, 'wpcf7' ); $id = (int) $atts['id']; $title = trim($atts['title']); if (!$contact_form = wpcf7_contact_form($id)) { $contact_form = wpcf7_get_contact_form_by_title($title); } if (!$contact_form) { return sprintf( '

錯誤: 找不到符合條件的聯絡表單。

', esc_html(__('Not Found', 'contact-form-7')) ); } $f = array(); $f['html'] = $contact_form->form_html($atts); $j = "var mxp_f_{$id}=" . json_encode($f) . ";"; $script = "

"; return $script; //$contact_form->form_html($atts); } add_shortcode('mxp_contact-form-7', 'mxp_wpcf7_contact_form_tag_func');

原本是直接將表單 HTML 標籤輸出,現在改透過 JavaScript 來包過回寫插入網站。

透過這招,就能避開「不會執行 JavaScript」的機器人了,有沒有可能還是被破?有!但難度高不少,我這小站不值得拉XD

這段程式貼到(子)主題中的 functions.php 裡後,還要把原本插入表單的短碼補上 mxp_ 開頭。

例如:

原本的 CF7 表單代碼是: [ contact-form-7 id="88" ] 改成 [ mxp_contact-form-7 id="88" ]

透過改變短碼來切換使用的程式碼片段,不想使用時改回原本的就好囉!執行的結果都是一樣的,肉眼看不出差異,但對機器人來說就是完全不一樣了。

想了解其他 CF7 玩法,可以點擊網站上的標籤找尋其他文章: Contact Form 7


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[///////////____36%_________]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


文章
Filter
Apply Filters
Mastodon