چگونه از پلاگین Akismet وردپرس برای تشخیص اسپم استفاده کنم؟

2 دیدگاه

هر گاه شما بخواهید در وردپرس یک فرم تماس , فرم نظرخواهی و هر فرم دیگری ایجاد کنید حتما باید فکری به حال بمباران اسپم ها بکنید.وگرنه خواهید دید که در زمان کوتاهی انبوهی از اطلاعات بیهوده اسپم به فرم شما سرازیر شدند.

یکی از بهترین راه هایی که می تواند سد محکمی جلوی اسپمرها ایجاد کند پلاگین توکار Akismet وردپرس است.تابع php زیر از پلاگین آکیسمت وردپرس برای چک کردن محتوای اسپم استفاده می کند.کافیست کد زیر را در انتهای فایل functions.php قالب فعلی قرار دهید و هر موقع نیاز به چک کردن محتوای اسپم داشتید این تابع را فراخوانی کنید.فقط دقت کنید که پلاگین Akismet باید فعال باشد.

function is_spam_akismet($args){
    global $akismet_api_host, $akismet_api_port;
    
    $query['user_ip']       = preg_replace( '/[^0-9., ]/', '', $_SERVER['REMOTE_ADDR'] );
    $query['user_agent']    = (isset( $_SERVER['HTTP_USER_AGENT'] )) ? $_SERVER['HTTP_USER_AGENT'] : '';
    $query['referrer']      = (isset( $_SERVER['HTTP_REFERER'] )) ? $_SERVER['HTTP_REFERER'] : '';
    $query['blog']          = get_option( 'home' );
    $query['blog_lang']     = get_locale(); // default 'en_US'
    $query['blog_charset']  = get_option( 'blog_charset' );
    $query['comment_type']  = 'forum-post'; //For more info http://bit.ly/2bVOMay
    
    $query['comment_content'] = $args["post_content"];
    $query['permalink']     = $args['referrer'];
    $query['comment_author'] = $args["user_name"];
    $query['comment_author_email'] = $args["user_email"];

    //$query['is_test']  = "1";  // uncomment this when testing spam detection
    //$query['comment_author']  = "viagra-test-123";  // uncomment this to test spam detection

    $query_string = http_build_query($query);
    
    $spam = false;
    if ( is_callable( array( 'Akismet', 'http_post' ) ) ) { //Akismet v3.0+
        $response = Akismet::http_post( $query_string, 'comment-check' );
    } else {
        $response = akismet_http_post( $query_string, $akismet_api_host,
            '/1.1/comment-check', $akismet_api_port );
    }
    if ( 'true' == $response[1] ) {
        $spam = true;
    }

    return $spam;
}

 

نحوه استفاده

به این شکل می توانید هر کجا نیاز بود این تابع را فراخوانی و استفاده کنید

$args["post_content"] = $_POST["content"];
$args["user_name"] = $_POST["sender_name"];
$args["user_email"] = $_POST["sender_email"];

if(is_spam_akismet($args)){
    //do something with spam
}

اگر این کد اسپم بودن محتوا را تشخیص داد مقدار true بر می گرداند والا اسپم نیست.

در همین رابطه :   چگونه وردپرس 3.2 را بدون درد بروز کنیم ؟
دسته بندی : Wordpress

2 نظر

  1. سلام. من یکی از خوانندگان همیشگی وب سایت شما هستم و اط مطالب خوب و مفید وب سایت تون استفاده می کنم. لطفا در سایت مطالب تازه تری قرار دهید. من از خواندن مطالب سایت شما لذت می برم.

    1. سلام . خیلی از نظر دلگرم کننده شما ممنونم . سعی من هم اینه با اینکه دست تنها هستم فعلا، در بین پروژه ها و کارها حتما وقتی برای مطالب جدید بزارم.
      مرسی

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *