mr.Seom 0 Опубликовано: 26 октября 2011 Рассказать Опубликовано: 26 октября 2011 >>>mamiki.ru Доброго времени, ДЛЕшники! ) Скажите, пожалуйста, где найти (или как определить) логи голосования в новости? Дело в том, что на сайте идет голосование. Некоторые пользователи недовольны и считают, что производится накрутка голосов "недобросовестными" участниками. В самом голосовании выставлена функция ограничения по IP и только для зарегистрированных пользователей. Но видно, по количеству зарегистрированных участников, что голосов больше нежели должно было быть. Где найти логи, чтобы определить "накрутку"? Или это ошибка? С уважением. Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 069 Опубликовано: 27 октября 2011 Рассказать Опубликовано: 27 октября 2011 Где найти логи, чтобы определить "накрутку"? только в БД, скрипт их нигде не выводит. В самом голосовании выставлена функция ограничения по IP и только для зарегистрированных пользователей. Но видно, по количеству зарегистрированных участников, что голосов больше нежели должно было быть. Вы имеете ввиду, что количество голосов у вас больше чем зарегистрированных пользователей? Это возможно только если в вашем опросе разрешено голосовать за несколько вариантов одновременно. Цитата Ссылка на сообщение Поделиться на других сайтах
mr.Seom 0 Опубликовано: 27 октября 2011 Рассказать Опубликовано: 27 октября 2011 Автор только в БД, скрипт их нигде не выводит. Если можно подскажите, как их найти и в какой таблице... Вы имеете ввиду, что количество голосов у вас больше чем зарегистрированных пользователей? Это возможно только если в вашем опросе разрешено голосовать за несколько вариантов одновременно. Да количество голосов больше, нежели зарегистрированных пользователей... при этом разрешено голосование только за один вариант. Поэтому и вышла такая ситуация. Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 069 Опубликовано: 27 октября 2011 Рассказать Опубликовано: 27 октября 2011 Если можно подскажите, как их найти и в какой таблице... таблица dle_poll_log Цитата Ссылка на сообщение Поделиться на других сайтах
mr.Seom 0 Опубликовано: 27 октября 2011 Рассказать Опубликовано: 27 октября 2011 Автор спасибо, жаль, что эта таблица ничего не дает(((( в плане анализа, кроме ip... а вот там и непонятное.. видно, что ipшники есть из подсети... а за что голосовали не понятно))) Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 069 Опубликовано: 27 октября 2011 Рассказать Опубликовано: 27 октября 2011 Зато я после вашего сообщения многое понял и тщательно все проверил. Дело в том что если голосует зарегистрированный пользователь, то в логи записывается его логин, который всегда постоянен, а не IP, IP записывается только если голосует гость, но у вас запрещено голосовать гостям. Тщательно проверив ваше сообщение я нашел, и понял, как нехорошие люди накручивают вам счетчики. Это ошибка скрипта. Для устранения данной проблемы вам нужно взять файл /engine/ajax/poll.php и его содержимое полностью заменить на: <?php /* ===================================================== DataLife Engine - by SoftNews Media Group ----------------------------------------------------- http://dle-news.ru/ ----------------------------------------------------- Copyright (c) 2004,2011 SoftNews Media Group ===================================================== Данный код защищен авторскими правами ===================================================== Файл: rating.php ----------------------------------------------------- Назначение: AJAX для опросов в новостях ===================================================== */ @session_start(); @error_reporting ( E_ALL ^ E_WARNING ^ E_NOTICE ); @ini_set ( 'display_errors', true ); @ini_set ( 'html_errors', false ); @ini_set ( 'error_reporting', E_ALL ^ E_WARNING ^ E_NOTICE ); define( 'DATALIFEENGINE', true ); define( 'ROOT_DIR', substr( dirname( __FILE__ ), 0, -12 ) ); define( 'ENGINE_DIR', ROOT_DIR . '/engine' ); include ENGINE_DIR . '/data/config.php'; if( $config['http_home_url'] == "" ) { $config['http_home_url'] = explode( "engine/ajax/poll.php", $_SERVER['PHP_SELF'] ); $config['http_home_url'] = reset( $config['http_home_url'] ); $config['http_home_url'] = "http://" . $_SERVER['HTTP_HOST'] . $config['http_home_url']; } require_once ENGINE_DIR . '/classes/mysql.php'; require_once ENGINE_DIR . '/data/dbconfig.php'; require_once ENGINE_DIR . '/modules/functions.php'; //################# Определение групп пользователей $user_group = get_vars( "usergroup" ); if( ! $user_group ) { $user_group = array (); $db->query( "SELECT * FROM " . USERPREFIX . "_usergroups ORDER BY id ASC" ); while ( $row = $db->get_row() ) { $user_group[$row['id']] = array (); foreach ( $row as $key => $value ) { $user_group[$row['id']][$key] = stripslashes($value); } } set_vars( "usergroup", $user_group ); $db->free(); } require_once ENGINE_DIR . '/modules/sitelogin.php'; if( ! $is_logged ) { $member_id['user_group'] = 5; } function votes($all, $ansid) { $data = array (); $alldata = array (); if( $all != "" ) { $all = explode( "|", $all ); foreach ( $all as $vote ) { list ( $answerid, $answervalue ) = explode( ":", $vote ); $data[$answerid] = intval( $answervalue ); } } foreach ( $ansid as $id ) { $data[$id] ++; } foreach ( $data as $key => $value ) { $alldata[] = intval( $key ) . ":" . intval( $value ); } $alldata = implode( "|", $alldata ); return $alldata; } function get_votes($all) { $data = array (); if( $all != "" ) { $all = explode( "|", $all ); foreach ( $all as $vote ) { list ( $answerid, $answervalue ) = explode( ":", $vote ); $data[$answerid] = intval( $answervalue ); } } return $data; } $news_id = intval( $_REQUEST['news_id'] ); $answers = explode( " ", trim( $_REQUEST['answer'] ) ); $buffer = ""; $vote_skin = trim(totranslit( $_REQUEST['vote_skin'], false, false)); $_IP = $db->safesql( $_SERVER['REMOTE_ADDR'] ); if( $is_logged ) $log_id = intval( $member_id['user_id'] ); else $log_id = $_IP; $poll = $db->super_query( "SELECT * FROM " . PREFIX . "_poll WHERE news_id = '{$news_id}'" ); $log = $db->super_query( "SELECT COUNT(*) as count FROM " . PREFIX . "_poll_log WHERE news_id = '{$news_id}' AND member ='{$log_id}'" ); if( $log['count'] and $_REQUEST['action'] != "list" ) $_REQUEST['action'] = "results"; if($_REQUEST['action'] != "list" AND !$user_group[$member_id['user_group']]['allow_poll']) $_REQUEST['action'] = "results"; $votes = ""; if( $_REQUEST['action'] == "vote" ) { $votes = votes( $poll['answer'], $answers ); $db->query( "UPDATE " . PREFIX . "_poll set answer='$votes', votes=votes+" . count( $answers ) . " WHERE news_id = '{$news_id}'" ); $db->query( "INSERT INTO " . PREFIX . "_poll_log (news_id, member) VALUES('{$news_id}', '$log_id')" ); $_REQUEST['action'] = "results"; } if( $_REQUEST['action'] == "results" ) { if( $votes == "" ) { $votes = $poll['answer']; $allcount = $poll['votes']; } else { $allcount = count( $answers ) + $poll['votes']; } $answer = get_votes( $votes ); $body = explode( "<br />", stripslashes( $poll['body'] ) ); $pn = 0; for($i = 0; $i < sizeof( $body ); $i ++) { $num = $answer[$i]; if( ! $num ) $num = 0; ++ $pn; if( $pn > 5 ) $pn = 1; if( $allcount != 0 ) $proc = (100 * $num) / $allcount; else $proc = 0; $proc = round( $proc, 2 ); $buffer .= <<<HTML {$body[$i]} - {$num} ({$proc}%)<br /> <img src="{$config['http_home_url']}templates/{$vote_skin}/dleimages/poll{$pn}.gif" height="10" width="{$proc}%" style="border:1px solid black;" alt="" /><br /> HTML; } } elseif( $_REQUEST['action'] == "list" ) { $body = explode( "<br />", stripslashes( $poll['body'] ) ); if( ! $poll['multiple'] ) { for($v = 0; $v < sizeof( $body ); $v ++) { if( ! $v ) $sel = "checked"; else $sel = ""; $buffer .= <<<HTML <div><input name="dle_poll_votes" type="radio" $sel value="{$v}" /> {$body[$v]}</div> HTML; } } else { for($v = 0; $v < sizeof( $body ); $v ++) { $buffer .= <<<HTML <div><input name="dle_poll_votes[]" type="checkbox" value="{$v}" /> {$body[$v]}</div> HTML; } } } else die( "error" ); @header( "Content-type: text/html; charset=" . $config['charset'] ); echo $buffer; ?> [/CODE] С данным кодом ваша проблема накрутки будет устранена. Но это к сожалению не отменит уже накрученных голосов. 1 Цитата Ссылка на сообщение Поделиться на других сайтах
mr.Seom 0 Опубликовано: 27 октября 2011 Рассказать Опубликовано: 27 октября 2011 Автор огромное вам спасибо... отменить не отменит конечно, но в будущем многим поможет.. Спасибо! )) Цитата Ссылка на сообщение Поделиться на других сайтах
DimkaG 5 Опубликовано: 29 октября 2011 Рассказать Опубликовано: 29 октября 2011 Для устранения данной проблемы вам нужно взять файл /engine/ajax/poll.php и его содержимое полностью заменить на: Это можно всем сделать? для какой версии скрипта?? Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 069 Опубликовано: 29 октября 2011 Рассказать Опубликовано: 29 октября 2011 Это можно всем сделать? да для какой версии скрипта?? для любой Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.