Данный хак не позволяет постоянно голосовать в опросе. Т.е. если я уже проголосовал то DLE запомнила все мои данные и при повторном голосовании уже мой голос не будет учтён, но всё равно DLE мне будет предлагать голосовать. В общем смысл хака такой: если я уже проголосовал, то DLE мне уже будет выводить результаты, а не предлагать снова проголосовать. Единственный минус данного фикса, это - добавление дополнительного запроса.
Установка:
Открываем engine/modules/vote.php и находим:
/////////////////////////////////////////////////////////////////////////////
// Проверяем проголосовал ли текущий пользователь
/////////////////////////////////////////////////////////////////////////////
$_IP = $db->safesql($_SERVER['REMOTE_ADDR']);
if (isset($member_id['name'])) $nick = $member_id['name'];
else
$nick = '';
if ($is_logged)
$row = $db->super_query("SELECT count(*) as count FROM ".PREFIX."_vote_result WHERE vote_id='$rid' AND name='$nick'");
else
$row = $db->super_query("SELECT count(*) as count FROM ".PREFIX."_vote_result WHERE vote_id='$rid' AND ip='$_IP'");
if ($row['count'] == 0) $is_voted = false;
else
$is_voted = true;
// Проверяем проголосовал ли текущий пользователь
/////////////////////////////////////////////////////////////////////////////
$_IP = $db->safesql($_SERVER['REMOTE_ADDR']);
if (isset($member_id['name'])) $nick = $member_id['name'];
else
$nick = '';
if ($is_logged)
$row = $db->super_query("SELECT count(*) as count FROM ".PREFIX."_vote_result WHERE vote_id='$rid' AND name='$nick'");
else
$row = $db->super_query("SELECT count(*) as count FROM ".PREFIX."_vote_result WHERE vote_id='$rid' AND ip='$_IP'");
if ($row['count'] == 0) $is_voted = false;
else
$is_voted = true;
Вырезаем и вставляем этот код НАД:
if ($vote_action == "vote")
Также над ним добавляем:
if ($is_voted )
{
$flag = 1;
}
{
$flag = 1;
}