هر گاه شما بخواهید در وردپرس یک فرم تماس , فرم نظرخواهی و هر فرم دیگری ایجاد کنید حتما باید فکری به حال بمباران اسپم ها بکنید.وگرنه خواهید دید که در زمان کوتاهی انبوهی از اطلاعات بیهوده اسپم به فرم شما سرازیر شدند.
یکی از بهترین راه هایی که می تواند سد محکمی جلوی اسپمرها ایجاد کند پلاگین توکار 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
بر می گرداند والا اسپم نیست.
سلام. من یکی از خوانندگان همیشگی وب سایت شما هستم و اط مطالب خوب و مفید وب سایت تون استفاده می کنم. لطفا در سایت مطالب تازه تری قرار دهید. من از خواندن مطالب سایت شما لذت می برم.
سلام . خیلی از نظر دلگرم کننده شما ممنونم . سعی من هم اینه با اینکه دست تنها هستم فعلا، در بین پروژه ها و کارها حتما وقتی برای مطالب جدید بزارم.
مرسی