為了防止垃圾評論各種方法都想盡了,下面我看網站有人說在wordpress禁止沒有Gravatar頭像的訪客提交評論也可以防止機器提交了廣告了,下面我們來看看.
1 為何限制沒有Gravatar頭像的訪客
前幾天博主就一直在想著是否要限制沒有gravatar頭像的用戶在博客留言,主要原因有三點:
1、博客使用的是wordpress程序,而Gravatar早在07年就被Automattic公司收購并在wp程序上發揚光大,所以,wp博客和gravatar頭像天生就是一對,當然要讓他們在一起了.
2、屏蔽廣告。很多spamer都是沒有gravatar頭像的,限制沒有gravatar頭像的訪客就等于過濾掉了相當一部分的垃圾廣告,扯遠一點,多說插件為眾多廣告商做出了巨大貢獻.
3、屏蔽毫無意義的評論。
一般沒有gravatar頭像的訪客不會活躍在博客圈,大多是有問題就找你,一解決就拍屁股走人,博主深有體會,之前寫了一篇《動易官方論壇的邀請碼》,很多人拿到邀請碼后連句謝謝都沒有,博客本來就是一個交流的平臺,失去了和用戶的交互,那就沒有任何意義了,所以,為了提升博客整體質量,需要屏蔽這部分訪客.
那么接下來就說說實現“wordpress中限制沒有Gravatar頭像的訪客提交評論”的具體方法:
2 判斷是否具有Gravatar頭像的函數
在functions.php中添加下面的函數,其作用是根據提交的email字段判斷該留言者是否具有gravatar頭像,還有種方法是通過http://www.gravatar.com/avatar/獲取到頭像文件的大小值是否為2637k來判斷,具體方法大家可以參考《再議Gravatar頭像緩存至本地服務器》中的代碼,代碼如下:
- /*
- * @author:vfhky 2013年09月11日20:23
- * @param string $email 用戶提交的表單中的email字段
- * @return int 0:無gravatar頭像; 1:有gravatar頭像
- **/
- function vfhky_checkgravatar($email){
- $email_hash = md5(strtolower(trim($email)));
- $check_uri = 'http://www.gravatar.com/avatar/' . $email_hash . '?d=404';
- $headers = @get_headers($check_uri);
- if (!preg_match("|200|", $headers[0])) {
- return 0;
- }
- else {return 1;}
- }
3 在comments-ajax.php中調用判斷函數
gravatar頭像判斷函數完成后,就可以在Willin Kan大神的comments-ajax.php文件中調用了,大概在該文件的90行處,在原代碼中加入判斷函數進行調用即可,代碼如下:
- /*
- * @author:vfhky 2013年09月11日20:30
- * @param string $comment_author_email 用戶提交的表單中的email字段
- **/
- if ( !$user->ID ) {
- if ( 6 > strlen($comment_author_email) || '' == $comment_author )
- err( __('提示:必須填寫昵稱及郵件。') );
- elseif ( !is_email($comment_author_email))
- err( __('提示:請輸入一個有效的電子郵件地址。') );
- elseif (vfhky_checkgravatar($comment_author_email) == 0)
- err( __('請使用Gravatar頭像留言。') );
- }
4 后記:wordpress中限制沒有Gravatar頭像的訪客提交評論,簡單兩步就實現了限制沒有Gravatar頭像的訪客提交評論,當然,這個功能也可以用jquery實現,不過,一旦用戶瀏覽器屏蔽了js,那么也就沒效果了,所以,綜合考慮還是用服務器端判斷更為安全可靠,雖然增加了額外資源的消耗.
新聞熱點
疑難解答
圖片精選