md3848

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

4 پست در این موضوع قرار دارد

ارسال شده در (ویرایش شده)

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

به اشتراک گذاری این پست


لینک به پست

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

 

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

0

به اشتراک گذاری این پست


لینک به پست

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

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

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

0

به اشتراک گذاری این پست


لینک به پست

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

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

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

0

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری