Перейти к публикации

Где логи голосования?!


Рекомендованные сообщения

>>>mamiki.ru

Доброго времени, ДЛЕшники! )

Скажите, пожалуйста, где найти (или как определить) логи голосования в новости? Дело в том, что на сайте идет голосование. Некоторые пользователи недовольны и считают, что производится накрутка голосов "недобросовестными" участниками. В самом голосовании выставлена функция ограничения по IP и только для зарегистрированных пользователей. Но видно, по количеству зарегистрированных участников, что голосов больше нежели должно было быть.

Где найти логи, чтобы определить "накрутку"? Или это ошибка?

С уважением.

Ссылка на сообщение
Поделиться на других сайтах

Где найти логи, чтобы определить "накрутку"?

только в БД, скрипт их нигде не выводит.

В самом голосовании выставлена функция ограничения по IP и только для зарегистрированных пользователей. Но видно, по количеству зарегистрированных участников, что голосов больше нежели должно было быть.

Вы имеете ввиду, что количество голосов у вас больше чем зарегистрированных пользователей? Это возможно только если в вашем опросе разрешено голосовать за несколько вариантов одновременно.

Ссылка на сообщение
Поделиться на других сайтах

только в БД, скрипт их нигде не выводит.

Если можно подскажите, как их найти и в какой таблице...

Вы имеете ввиду, что количество голосов у вас больше чем зарегистрированных пользователей? Это возможно только если в вашем опросе разрешено голосовать за несколько вариантов одновременно.

Да количество голосов больше, нежели зарегистрированных пользователей... при этом разрешено голосование только за один вариант. Поэтому и вышла такая ситуация.

Ссылка на сообщение
Поделиться на других сайтах

Если можно подскажите, как их найти и в какой таблице...

таблица dle_poll_log

Ссылка на сообщение
Поделиться на других сайтах

спасибо, жаль, что эта таблица ничего не дает(((( в плане анализа, кроме ip... а вот там и непонятное.. видно, что ipшники есть из подсети... а за что голосовали не понятно)))

Ссылка на сообщение
Поделиться на других сайтах

Зато я после вашего сообщения многое понял и тщательно все проверил. Дело в том что если голосует зарегистрированный пользователь, то в логи записывается его логин, который всегда постоянен, а не 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]

С данным кодом ваша проблема накрутки будет устранена. Но это к сожалению не отменит уже накрученных голосов.

Ссылка на сообщение
Поделиться на других сайтах

Для устранения данной проблемы вам нужно взять файл /engine/ajax/poll.php и его содержимое полностью заменить на:

Это можно всем сделать?

для какой версии скрипта??

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...