رفتن به مطلب

مدیریت دیدگاه های جفنگ و ایجاد قوانین برای دیگاه های سایت


پست های پیشنهاد شده

سلام - به خاطر دیدگاه های اسپم - و این که افزونه 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();
        }
    });
}

 

ویرایش شده توسط md3848
لینک به ارسال

خب پست قبل رو بیخیال بشید - کد فوق رو رفتم تو فایل wp-includes/comment.php به تابع wp_allow_comment اضافه کردم ( با تغییرات ولی خب کلیت داستان همینه ) فعلا داره کار میکنه -

 

یه سوالی - وردپرس بروز رسانی بشه - این فایل هم تغییر میکنه؟ چیکار کنم که تغییر نکنه؟ یا اگه تغییر کرد کد من در تابع مد نظر اضافه بشه به صورت خودکار؟

لینک به ارسال
  • 2 هفته بعد...

این روش ساده تا الان رو سایت من بدون مشکل جواب داده.1 دیدگاه1اسپم هم نتونسته قاچاقی رد بشه.دیدگاه های ملت هم اسپم نمیشن...در حالی وقتی از افزونه های مختلف استفاده میکردم هر کدوم داستان خودشونو داشتن.نمیدونم چرا کسی تو این مبحث شرکت نکرد.من pc ییم در حال تعمیره.درست که شد میام کدشو میزارم.البته اگه یادم نره.

هدفم از این پست این بود که بگم این روش ساده جواب داده برا من تا الان.شما هم میتونید تست کنید.

عید همتون مبارک.

لینک به ارسال
  • 2 هفته بعد...

اینم کدی که گفتم ( فقط نمیدونم وردپرس رو بروزرسانی کنیم این کدا حذف میشه یا نه - و اگه حذف میشه راه حلش چیه )

کد زیر رو تو فایل 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% نظرات جفگ غیر فارسی هستند - حداقل برا من که اینطور هستش.

امیدوارم بکارتون بیاد.

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...