md3848 9 ارسال شده در اسفند 97 گزارش بازنشر ارسال شده در اسفند 97 (ویرایش شده) سلام - به خاطر دیدگاه های اسپم - و این که افزونه akismet هم اکثرا از کار میوفته - یه کد جاوا اسکریپت نوشتم که ورودی های دیدگاه رو بررسی میکنه و اگه تعداد کلمات فارسی از غیر فارسی کمتر بود، دیدگاه ارسال نمیشه - خودم که تست میکنم مشکلی نداره - کش سایت رو هم پاک کردم - اما باز دیدگاه های اسپم ارسال میشه - چطوری؟ حتی اگه جاوا اسکریپ رو غیر فعال کنه - باز نباید دیدگاه ارسال بشه این کدی هستش که من استفاده کردم : 1-بررسی ورودی های "نام" - "ایمیل" - "متن دیدگاه" که خالی نباشند و فرمت ایمیل هم صحیح باشه 2-اگر کاربر وارد سایت شده بود، فقط "متن دیدگاه" رو بررسی کن که خالی نباشه و بعد دیدگاه رو ارسال کن 3-اگه کاربرد وارد سایت نشده بود، که هر 3 ورودی رو بررسی کن و بعد دیدگاه رو ارسال کن. function validateEmail(email) { var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; return re.test(String(email).toLowerCase()); } function checkCommentRules_sendComment() { var commentText = document.getElementById("comment").value; // textarea is empty if( commentText.length == 0 ) { alert( "لطفا دیدگاهتون رو بنویسید!" ); return; } var data = { action: 'is_user_logged_in' }; var ajaxurl = 'http://dmf313.ir/wp-admin/admin-ajax.php'; jQuery.post(ajaxurl, data, function(response) { if(response == 'yes') { document.getElementsByClassName("comment-form")[0].submit(); } else { var commentAuthor = document.getElementById("author").value; var commentEmail = document.getElementById("email").value; // author is empty if( commentAuthor.length == 0 ) { alert( "لطفا اسمتون رو بنویسید" ); return; } // email is empty if( commentEmail.length == 0 ) { alert( "لطفا ایمیلتون رو بنویسید" ); return; } // email is not valid if( !validateEmail(commentEmail) ) { alert( "ایمیل وارد شده صحیح نیست!" ); return; } var persianCounter=0, englishCounter=0; for( var i=0; i<commentText.length; i++) { if( (commentText[i] >= 'ا' && commentText[i] <='ی') || (commentText.charCodeAt(i) >= 32 && commentText.charCodeAt(i) <= 64) || (commentText.charCodeAt(i) >= 91 && commentText.charCodeAt(i) <= 96) || (commentText.charCodeAt(i) >= 127 && commentText.charCodeAt(i) <= 126) ) persianCounter++; } englishCounter = commentText.length - persianCounter; //console.log( commentText.length + " - " + persianCounter ); if( englishCounter > persianCounter ) { alert("تعداد حروف فارسی باید بیشتر از تعداد حروف انگلیسی باشید تا دیدگاه ارسال شود"); return; } document.getElementsByClassName("comment-form")[0].submit(); } }); } ویرایش شده اسفند 97 توسط md3848 نقل قول لینک به ارسال
md3848 9 ارسال شده در اسفند 97 مالک گزارش بازنشر ارسال شده در اسفند 97 خب پست قبل رو بیخیال بشید - کد فوق رو رفتم تو فایل wp-includes/comment.php به تابع wp_allow_comment اضافه کردم ( با تغییرات ولی خب کلیت داستان همینه ) فعلا داره کار میکنه - یه سوالی - وردپرس بروز رسانی بشه - این فایل هم تغییر میکنه؟ چیکار کنم که تغییر نکنه؟ یا اگه تغییر کرد کد من در تابع مد نظر اضافه بشه به صورت خودکار؟ نقل قول لینک به ارسال
md3848 9 ارسال شده در فروردین 98 مالک گزارش بازنشر ارسال شده در فروردین 98 این روش ساده تا الان رو سایت من بدون مشکل جواب داده.1 دیدگاه1اسپم هم نتونسته قاچاقی رد بشه.دیدگاه های ملت هم اسپم نمیشن...در حالی وقتی از افزونه های مختلف استفاده میکردم هر کدوم داستان خودشونو داشتن.نمیدونم چرا کسی تو این مبحث شرکت نکرد.من pc ییم در حال تعمیره.درست که شد میام کدشو میزارم.البته اگه یادم نره. هدفم از این پست این بود که بگم این روش ساده جواب داده برا من تا الان.شما هم میتونید تست کنید. عید همتون مبارک. نقل قول لینک به ارسال
md3848 9 ارسال شده در فروردین 98 مالک گزارش بازنشر ارسال شده در فروردین 98 اینم کدی که گفتم ( فقط نمیدونم وردپرس رو بروزرسانی کنیم این کدا حذف میشه یا نه - و اگه حذف میشه راه حلش چیه ) کد زیر رو تو فایل wp-includes/comment.php به تابع wp_allow_comment اضافه کنید نقل قول //----------------------------------------------------------- $persianCounter = 0; $englishCounter = 0; mb_internal_encoding('utf8'); $myData = $commentdata['comment_content']; $myDataLen = mb_strlen($myData); for( $i=0; $i < $myDataLen; $i++) { $char = mb_substr($myData, $i, 1); if( preg_match('/^[\x{0600}-\x{06ff}]+$/u', $char) || preg_match('/^[\x{020}-\x{040}]+$/u', $char) ) { $persianCounter++; } } $englishCounter = $myDataLen - $persianCounter; // تعداد حروف فارسی باید بیشتر از تعداد حروف انگلیسی باشید تا دیدگاه ارسال شود if( $englishCounter > $persianCounter ) return 'spam'; //----------------------------------------------------------- کد بالا رو قبل از کد زیر وارد کنید : نقل قول $dupe_id = $wpdb->get_var( $dupe ); الان کسی نظری بده و تعداد حروف غیر فارسی از حروف فارسی بیشتر بود - دیدگاه مستقیما میره تو لیست جفنگ ها - چون 100% نظرات جفگ غیر فارسی هستند - حداقل برا من که اینطور هستش. امیدوارم بکارتون بیاد. نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .