- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) >
- PHP怎么實(shí)現讓W(xué)ordPress攔截垃圾評論
本篇內容主要講解“PHP怎么實(shí)現讓W(xué)ordPress攔截垃圾評論”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強。下面就讓小編來(lái)帶大家學(xué)習“PHP怎么實(shí)現讓W(xué)ordPress攔截垃圾評論”吧!
攔截英文垃圾評論
由于絕大多數的垃圾評論都是英文的,所以國內不少朋友在使用 Some Chinese Please 插件,它可以有效地攔截內容中不帶有中文字的comment和trackback(pingback),不寫(xiě)入數據庫中,可有效地減小spam對blog的無(wú)謂使用。雖然已經(jīng) 2 年多沒(méi)有更新,但還是可用的。
其實(shí)還可以簡(jiǎn)化下,直接將下面的代碼添加到主題的 functions.php 文件,效果與使用 Some Chinese Please 插件相同:
/* refused spam */ function refused_spam_comments( $comment_data ) { $pattern = '/[一-龥](méi)/u'; if(!preg_match($pattern,$comment_data['comment_content'])) { err('評論必須含中文!'); } return( $comment_data ); } add_filter('preprocess_comment','refused_spam_comments');
@Teddysun http://teddysun.com/ 經(jīng)過(guò)實(shí)測反饋,Wordpress中并沒(méi)有err這個(gè)函數(這個(gè)函數也許是存在于 @知更鳥(niǎo) 的主題里)。因此不會(huì )有提示信息出現。最好還是用wp_die函數,這樣就會(huì )有提示信息。所以,上面的代碼如果不生效,可以使用以下代碼:
/* refused spam */ function refused_spam_comments( $comment_data ) { $pattern = '/[一-龥](méi)/u'; if(!preg_match($pattern,$comment_data['comment_content'])) { wp_die('評論必須含中文!'); } return( $comment_data ); } add_filter('preprocess_comment','refused_spam_comments');
針對那些使用技術(shù)手段,比如GET、POST等方式不填寫(xiě)前臺表單,直接讀取后臺程序文件的spam,只有屏蔽IP才能緩解瘋狗一樣的攻勢,其它什么驗證碼、滑動(dòng)解鎖等等都沒(méi)用。
禁止某些IP訪(fǎng)問(wèn)
可以在.htaccess文件中添加:
Order Deny,Allow Deny from xxx.xxx.xxx.xx Deny from xxx.xxx.xxx.xx
攔截中文垃圾評論
如果發(fā)現大量垃圾評論是中文,那么可以用Willin Kan 寫(xiě)的小墻工具, 理論上可以 100% 屏蔽機器人發(fā)出的 spam. 如果是自然人提交評論, 小墻會(huì )在評論提交表單中加一個(gè) hidden 變量, 如果后臺檢測不到這個(gè)變量, 則認定為 spam, 可以選擇需要審核, 也可以直接過(guò)濾掉.
如果對方知道你用的 hidden 變量或者使用虛擬點(diǎn)擊, 就可以破掉小墻. 但是 spam 本來(lái)就是小成本和以量取勝的事情, 除非與你與 spammer 結仇了, 我相信人家不會(huì )那么無(wú)聊來(lái)破你小墻. 而且機器人 spam 的數量占了絕大多數, 這個(gè)工具很有必要.
貌似 Willin 現在不用 WordPress 了, 網(wǎng)站也正在維護, 小墻代碼我就貼在下面. 使用方法很簡(jiǎn)單, 拷貝到 function.php 文件最后即可. 其中 wall 是隱藏關(guān)鍵字, 有需要的請自行更改 (不改也可以).
class anti_spam { //建立 function anti_spam() { if ( !current_user_can('level_0') ) { add_action('template_redirect', array($this, 'w_tb'), 1); add_action('init', array($this, 'gate'), 1); add_action('preprocess_comment', array($this, 'sink'), 1); } } //設欄位 function w_tb() { if ( is_singular() ) { ob_start(create_function('$input','return preg_replace("#textarea(.*?)name=([\"\'])comment([\"\'])(.+)/textarea>#", "textarea$1name=$2wall$3$4/textarea><textarea name=\"comment\" cols=\"50\" rows=\"4\" style=\"display:none\"></textarea>",$input);') ); } } //檢查 function gate() { ( !empty($_POST['wall']) && empty($_POST['comment']) ) ? $_POST['comment'] = $_POST['wall'] : $_POST['spam_confirmed'] = 1; } //處理 function sink( $comment ) { if ( !empty($_POST['spam_confirmed']) ) { //方法一:直接擋掉, 將 die(); 前面兩斜線(xiàn)刪除即可. //die(); //方法二:標記為spam, 留在資料庫檢查是否誤判. //add_filter('pre_comment_approved', create_function('', 'return "spam";')); /* $is_ping = in_array( $comment['comment_type'], array('pingback', 'trackback') ); $comment['comment_content'] = ( $is_ping ) ? "◎ 這是 Pingback/Trackback, 小牆懷疑這可能是 Spam!\n" . $comment['comment_content'] : "[ 小牆判斷這是Spam! ]\n" . $comment['comment_content']; */ // MG12 的處理方法 $is_ping = in_array( $comment['comment_type'], array('pingback', 'trackback') ); if(!$is_ping) { die(); } } return $comment; } } new anti_spam();
計算前端處理時(shí)間
在輸入框上方用 JavaScript 取一個(gè)時(shí)間戳作為全局變量, 在提交表單的時(shí)候獲取提交時(shí)間, 兩個(gè)時(shí)間相減, 如果小于可能值, 則視為機器人. 判斷為機器人的評論你可以按小墻的方式處理, 也可以不處理 (不占用服務(wù)器資源, 但不能記錄 spam 信息).
相對與小墻, 這種方法更加可靠, 但絕不是沒(méi)有漏洞, 只要 spammer 做個(gè) setTimeout 延遲發(fā)布就破了.
時(shí)間戳
老掉牙的方機器人方法, 很實(shí)用, 但有最大的缺點(diǎn): 用戶(hù)體驗不好. 要求訪(fǎng)客多填一個(gè)很難觀(guān)察的數字, 嚴重打壓評論者積極性. WordPress 平臺有很多這類(lèi)插件可以用, 但我是不建議使用的.
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。
Copyright ? 2009-2021 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 珠海市特網(wǎng)科技有限公司 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站