• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

Помощь запретить голосование за себя

SPoX

Знаток
Регистрация
19 Апр 2014
Сообщения
186
Реакции
28
здравствуйте друзья
у меня на сайте (10.5 версия) установлено модуль рейтинга EasyLike 1.4.1
все работает отлично но есть одно но как в этом модуле запретить голосование за себя?



за ранее спасибо всем за помощь
 
Чисто в теории...

В файле /engine/ajax/easylike.php найти:
PHP:
if (count(explode('.', $ip)) == 4 ) {
	// Если получен IP посетителя - работаем.
	if (!$like_id) {
		// Если записи о лайках нет - добавим.
		$db->query("INSERT INTO " . PREFIX . "_easylike_count ($col, likes) VALUES ($id, '1')");
		$easyLike = setLog($col, $likes['likes'], $id, $name, $ip);
		sendNotify($id, $name, $is_comment);
	} else {
		// Если запись есть, то проверяем, не лайкал ли этот посетитель.
		$select = "SELECT {$col} FROM " . PREFIX . "_easylike_log WHERE {$col} = $id AND {$where}";
		$row = $db->super_query($select);

		if (!$row[$col]) {
			// Если не лайкал - работаем.
			$db->query("UPDATE " . PREFIX . "_easylike_count SET likes=likes+1 WHERE {$col} ='".$id."'");
			$easyLike = setLog($col, $likes['likes'], $id, $name, $ip);
			sendNotify($id, $name, $is_comment);
		} else {
			// Если лайкал - шлём ему привет :).
			$easyLike = ':-)';
		}
	}
}
Заменить на:
PHP:
$user_id = -1;

if (count(explode('.', $ip)) == 4 ) {
	// Если получен IP посетителя - работаем.
	if (!$like_id) {
		// Если записи о лайках нет - добавим.
		$db->query("INSERT INTO " . PREFIX . "_easylike_count ($col, likes) VALUES ($id, '1')");
		$easyLike = setLog($col, $likes['likes'], $id, $name, $ip);
		sendNotify($id, $name, $is_comment);
	} else {
		// Если запись есть, то проверяем, не лайкал ли этот посетитель.
		$select = "SELECT {$col} FROM " . PREFIX . "_easylike_log WHERE {$col} = $id AND {$where}";
		$row = $db->super_query($select);

        if ($member_id['user_group'] != 5) {
            if ($col == 'news_id') {
                $select = "SELECT `user_id` FROM " . PREFIX . "_post_extras WHERE {$col} = $id";
                $user_id = $row = $db->super_query($select);
            } elseif {
                $select = "SELECT `user_id` FROM " . PREFIX . "_comments WHERE {$col} = $id";
                $user_id = $row = $db->super_query($select);
            }
        }

		if (!$row[$col] && $member_id['user_id'] != $user_id) {
			// Если не лайкал - работаем.
			$db->query("UPDATE " . PREFIX . "_easylike_count SET likes=likes+1 WHERE {$col} ='".$id."'");
			$easyLike = setLog($col, $likes['likes'], $id, $name, $ip);
			sendNotify($id, $name, $is_comment);
		} else {
			// Если лайкал - шлём ему привет :).
			$easyLike = ':-)';
		}
	}
}

Не проверял работоспособность, сделано в блокноте. Если не поможет - завтра поправлю до работоспособного состояния
 
Чисто в теории...

В файле /engine/ajax/easylike.php найти:
PHP:
if (count(explode('.', $ip)) == 4 ) {
    // Если получен IP посетителя - работаем.
    if (!$like_id) {
        // Если записи о лайках нет - добавим.
        $db->query("INSERT INTO " . PREFIX . "_easylike_count ($col, likes) VALUES ($id, '1')");
        $easyLike = setLog($col, $likes['likes'], $id, $name, $ip);
        sendNotify($id, $name, $is_comment);
    } else {
        // Если запись есть, то проверяем, не лайкал ли этот посетитель.
        $select = "SELECT {$col} FROM " . PREFIX . "_easylike_log WHERE {$col} = $id AND {$where}";
        $row = $db->super_query($select);

        if (!$row[$col]) {
            // Если не лайкал - работаем.
            $db->query("UPDATE " . PREFIX . "_easylike_count SET likes=likes+1 WHERE {$col} ='".$id."'");
            $easyLike = setLog($col, $likes['likes'], $id, $name, $ip);
            sendNotify($id, $name, $is_comment);
        } else {
            // Если лайкал - шлём ему привет :).
            $easyLike = ':-)';
        }
    }
}
Заменить на:
PHP:
$user_id = -1;

if (count(explode('.', $ip)) == 4 ) {
    // Если получен IP посетителя - работаем.
    if (!$like_id) {
        // Если записи о лайках нет - добавим.
        $db->query("INSERT INTO " . PREFIX . "_easylike_count ($col, likes) VALUES ($id, '1')");
        $easyLike = setLog($col, $likes['likes'], $id, $name, $ip);
        sendNotify($id, $name, $is_comment);
    } else {
        // Если запись есть, то проверяем, не лайкал ли этот посетитель.
        $select = "SELECT {$col} FROM " . PREFIX . "_easylike_log WHERE {$col} = $id AND {$where}";
        $row = $db->super_query($select);

        if ($member_id['user_group'] != 5) {
            if ($col == 'news_id') {
                $select = "SELECT `user_id` FROM " . PREFIX . "_post_extras WHERE {$col} = $id";
                $user_id = $row = $db->super_query($select);
            } elseif {
                $select = "SELECT `user_id` FROM " . PREFIX . "_comments WHERE {$col} = $id";
                $user_id = $row = $db->super_query($select);
            }
        }

        if (!$row[$col] && $member_id['user_id'] != $user_id) {
            // Если не лайкал - работаем.
            $db->query("UPDATE " . PREFIX . "_easylike_count SET likes=likes+1 WHERE {$col} ='".$id."'");
            $easyLike = setLog($col, $likes['likes'], $id, $name, $ip);
            sendNotify($id, $name, $is_comment);
        } else {
            // Если лайкал - шлём ему привет :).
            $easyLike = ':-)';
        }
    }
}

Не проверял работоспособность, сделано в блокноте. Если не поможет - завтра поправлю до работоспособного состояния
пока что выдает ошибку при нажатии на лайк

Parse error: syntax error, unexpected '{', expecting '(' in/home/mysite.ru/public_html/engine/ajax/easylike.php on line 123
 
Нужно передавать автора комментария или новости и сравнивать с member_id вот и все.
 
Нужно передавать автора комментария или новости и сравнивать с member_id вот и все.
здесь кто меня знает все знают что в PHP мои возможности равняется к нулю
если поможете мне буду благодарен а то сам по себе я не очень далеко пойду
ну если работа сложная готов заплатить
 
1) Открыть /engine/modules/easylike/easylike.php найти (2 РАЗА) :
Код:
data-'
Рядом вставить :
Код:
data-avtor="' . $author . '"
2) Скрипт от модуля
HTML:
// Модуль Easy Like by ПафНутиЙ
$(document).on('click touchstart', '.easylike_count', function (event) {
    event.preventDefault();
    var $this = $(this),
        news_id = $this.data('news_id'),
        comment_id = $this.data('comment_id'),
        count = $this.data('count');
    // показываем прелоадер
    $this.html('<span class="easylike_load"><i class="easylike_circles ec1"></i><i class="easylike_circles ec2"></i><i class="easylike_circles ec3"></i></span>');
    $.post(dle_root + "engine/ajax/easylike.php", {
        news_id: news_id,
        comment_id: comment_id,
        count: count
    }, function (data) {
        if (data > count + 1) {
            // Если вдруг запись лайкнет кто-то ещё пока пользователь смотрит страницу - скажем ему об этом, пусть знает.
            data = (data) + '<span title="Пока вы смотрели страницу, запись понравилась ещё кому-то.">(' + (data - count - 1) + ')</span>';
        };
        $this.html(data);
    });
});
Заменить на :
HTML:
// Модуль Easy Like by ПафНутиЙ
$(document).on('click touchstart', '.easylike_count', function (event) {
    event.preventDefault();
    var $this = $(this),
        news_id = $this.data('news_id'),
        comment_id = $this.data('comment_id'),
        count = $this.data('count'),
        avtor = $this.data('avtor');
    // показываем прелоадер
    $this.html('<span class="easylike_load"><i class="easylike_circles ec1"></i><i class="easylike_circles ec2"></i><i class="easylike_circles ec3"></i></span>');
    $.post(dle_root + "engine/ajax/easylike.php", {
        news_id: news_id,
        comment_id: comment_id,
        count: count,
        avtor : avtor
    }, function (data) {
        if (data > count + 1) {
            // Если вдруг запись лайкнет кто-то ещё пока пользователь смотрит страницу - скажем ему об этом, пусть знает.
            data = (data) + '<span title="Пока вы смотрели страницу, запись понравилась ещё кому-то.">(' + (data - count - 1) + ')</span>';
        };
        $this.html(data);
    });
});
3) Открыть /engine/ajax/easylike.php найти :
Код:
$ip = $db->safesql($_SERVER['REMOTE_ADDR']);
Ниже вставить :
PHP:
$avtor = $db->safesql(strip_tags(stripslashes(trim($avtor))));
Далее найти :
PHP:
if (count(explode('.', $ip)) == 4 ) {
Заменить на :
PHP:
if (count(explode('.', $ip)) == 4 ) {
if($avtor != $member_id['name']) {
Далее найти :
PHP:
} else {
    // Если IP не получили (бывает такое с ipv6 :)) - показываем грустный смайлик.
Заменить на :
PHP:
}
else
$easyLike = 'Нельзя голосовать за самого себя!';
4) После изменить подключение :
Код:
{include file="engine/modules/easylike/easylike.php?news_id={news-id}"}
На :
Код:
{include file="engine/modules/easylike/easylike.php?news_id={news-id}&author={login}"}
И для комментариев :
Код:
{include file="engine/modules/easylike/easylike.php?comment_id={id}"}
Заменить на :
Код:
{include file="engine/modules/easylike/easylike.php?comment_id={id}&author={login}"}
 
Последнее редактирование:
что-то не получилось
когда голосуешь за свой коммент без проблем лайкает и если нажать заново пишет уже :)

и так тоже с новостями
 
Все должно работать, смотрите у себя. Почистье кэш
 
Все должно работать, смотрите у себя. Почистье кэш
почистил кеш в браузере + в ДЛЕ
сделал все по инструкции как вы написали, но не работает
можете проверить у себя
 
Сори, в моём случае заменить на (вместо else написал elseif) :

PHP:
$user_id = -1;

if (count(explode('.', $ip)) == 4 ) {
    // Если получен IP посетителя - работаем.
    if (!$like_id) {
        // Если записи о лайках нет - добавим.
        $db->query("INSERT INTO " . PREFIX . "_easylike_count ($col, likes) VALUES ($id, '1')");
        $easyLike = setLog($col, $likes['likes'], $id, $name, $ip);
        sendNotify($id, $name, $is_comment);
    } else {
        // Если запись есть, то проверяем, не лайкал ли этот посетитель.
        $select = "SELECT {$col} FROM " . PREFIX . "_easylike_log WHERE {$col} = $id AND {$where}";
        $row = $db->super_query($select);

        if ($member_id['user_group'] != 5) {
            if ($col == 'news_id') {
                $select = "SELECT `user_id` FROM " . PREFIX . "_post_extras WHERE {$col} = $id";
                $user_id = $row = $db->super_query($select);
            } elseif {
                $select = "SELECT `user_id` FROM " . PREFIX . "_comments WHERE {$col} = $id";
                $user_id = $row = $db->super_query($select);
            }
        }

        if (!$row[$col] && $member_id['user_id'] != $user_id) {
            // Если не лайкал - работаем.
            $db->query("UPDATE " . PREFIX . "_easylike_count SET likes=likes+1 WHERE {$col} ='".$id."'");
            $easyLike = setLog($col, $likes['likes'], $id, $name, $ip);
            sendNotify($id, $name, $is_comment);
        } else {
            // Если лайкал - шлём ему привет :).
            $easyLike = ':-)';
        }
    }
}
Gameer, не нужно передавать автора, мы же уже подключаем:
require_once ENGINE_DIR . '/modules/sitelogin.php';
Значит по кукам ID автора узнаем...

Разве что вообще скрыть кнопки... Но тогда опять же ничего не мешает подключить sitelogin.php
Получать данные из GET - самая плохая идея.. Твою проверку обойти раз плюнуть - я могу подделать свой ID
 
Назад
Сверху