Автор: Sanasol: Дата: 06.16.2010
НПЦ
map,173,72,5 script Голосование 72,{
mes"Хотите получить тцг?";
switch(select("Да:Нет")){
case 1:
set .votep,0;
query_sql "SELECT `vote` FROM `login` WHERE `account_id` = '"+getcharid(3)+"'",.votep;
if( .votep == 0 ){ mes "Сначала проголосуйте"; close; }
set .votep,.votep-1;
query_sql "UPDATE `login` SET `vote` = '"+.votep+"' WHERE `account_id` = '"+getcharid(3)+"'";
getitem 7227,1;
close;
break;
case 2:
close;
break;
}
}
1. Кликаете на баннер:
2. Голосуете
3. Выбираете Топ в котором вы проголосовали
/*
Добавить в таблицу login 5 полей:
ALTER TABLE `login` ADD `vote` INT( 5 ) NOT NULL DEFAULT '0',
ADD `vote_time` INT( 100 ) NOT NULL DEFAULT '0',
ADD `vote_ip` VARCHAR( 100 ) NOT NULL DEFAULT '0',
ADD `vote2_time` INT( 100 ) NOT NULL DEFAULT '0',
ADD `vote2_ip` VARCHAR( 100 ) NOT NULL DEFAULT '0',
ADD `vote3_time` INT( 100 ) NOT NULL DEFAULT '0',
ADD `vote3_ip` VARCHAR( 100 ) NOT NULL DEFAULT '0'
*/
include("./config/db.php");
@mysql_select_db($rodb,$db);
$top = array(
1 => array(1 => "http://game100rus.com/sitedetails_10883.html", 2 => "vote_time", 3 => "vote_ip"),
2 => array(1 => "http://land-game.ru/index.php?do=sitedetails&id=48", 2 => "vote2_time", 3 => "vote2_ip"),
3 => array(1 => "http://ragnarok-top.dsro.ru/export/1/", 2 => "vote3_time", 3 => "vote3_ip")
);
if (isset($_POST['vote'])) {
if ($_POST['login'] == '') { echo "
Вы не ввели логин"; }
if ($_POST['top'] == '') { echo "
Вы не выбрали Топ"; }
$num_top = $_POST['top'];
$user = trim($_POST['login']); // Логин
$vk_id = trim($_POST['vk_id']); // Айди Контакта
$result = mysql_query ("select * from `login` WHERE `userid`='".mysql_real_escape_string($user)."'",$db) or die(mysql_error());
$myrow = mysql_fetch_array($result);
$curr_time = time(); //Текущее время
$vote_time = $myrow[$top[$num_top][2]]; // Последний раз голосовал
$stranica = file_get_contents($top[$num_top][1]); //Получаем статистику
$userip = $_SERVER['REMOTE_ADDR']; //IP юзера
$ip = mysql_query ("select * from `login` WHERE `vote_ip`='$userip' and `userid`<>'$user'",$db) or die(mysql_error());
$check_ip = mysql_fetch_array($ip);
$vote_ip = $check_ip[$top[$num_top][3]];
$pos = strpos($stranica, $userip); // Ищем данные пользователя в статистике
if ($num_top == 3)
{
$pos = strpos($stranica, $vk_id); // Ищем данные пользователя в статистике
}
if (($curr_time-$vote_time) < 3600*12) { echo "
Вы голосовали менее 12 часов назад";} else {
if ($vote_ip == $userip) { echo "
Вы уже голосовали"; } else {
if ($pos === false) {
echo "
Вы не проголосовали. " ;
} else {
$curr_time = time();
$update_vote = mysql_query ("UPDATE `login` set `vote`=`vote`+'1', `".$top[$num_top][2]."`='$curr_time', `".$top[$num_top][3]."`='$userip' WHERE `userid`='$user'",$db) or die(mysql_error());
$points = mysql_query ("select * from `login` WHERE `userid`='$user'",$db) or die(mysql_error());
$points2 = mysql_fetch_array($points);
do
{
printf("
У вас %s голоса(-ов)
",$points2["vote"]);
}
while ($points2 = mysql_fetch_array($points));
echo "
Бонус зачислен.";
}}
}
}
?>
$host = "127.0.0.1";
$user = "asdqwee";
$pass = "asdaweffqwe";
$rodb = "ragnarok";
$db = mysql_connect($host, $user, $pass) or die(mysql_error());
Автор: Даниил: Дата: 06.16.2010
Цитата Sanasol;25347:
Если брать в расчет игроков с постоянным адресом, то можно сделать скрипт кроном или в Ро которые обнуляет IP тех кто голосовал к примеру в 00-00 и 12-00
Автор: Sanasol: Дата: 06.16.2010
Цитата XKoriKX;25349:
Небольшой офтоп.
А ты предусмотрел одну вещь?
Ты же наверняка знаешь что у некоторых людей, как у меня, ай-пи динамический. Его бесполезно отслеживать. Так вот.
Можно создать новый акк, голоснуть, перекинуть тцг. ИМХО решается это токо запретом на передачу)
SELECT * FROM `login` WHERE UPPER(ip-vote) LIKE '%".strtoupper($userip)."%'
Цитата Даниил:
Можно поподробнее
OnClock0000:
OnClock1200:
query_sql "UPDATE `login` SET `ip-vote` = '0' WHERE `ip-vote` >= '1' ";
Автор: Nester: Дата: 06.16.2010
туплю... прикольная встега)
Автор: XKoriKX: Дата: 06.16.2010
Цитата Даниил;25350]
[QUOTE=Sanasol;25347:
Если брать в расчет игроков с постоянным адресом, то можно сделать скрипт кроном или в Ро которые обнуляет IP тех кто голосовал к примеру в 00-00 и 12-00
Автор: Sanasol: Дата: 06.16.2010
Цитата Нестер;25353:
зачем конект к базе?
Автор: XKoriKX: Дата: 06.16.2010
Сан. Ещё такой прикол видел. Адресов это не касается.
Можно голосовать только 1 раз войдя пой своим акком в базу на сайте. После того как ты проголосовал, у тебя убирают возможность голосовать повторно с этогоже акка. Тоесть запрет идёт не на ай-пи, а на аккаунт, с которого голоснул человек )
Автор: Sanasol: Дата: 06.16.2010
Цитата XKoriKX;25356:
Сан. Ещё такой прикол видел. Адресов это не касается.
Можно голосовать только 1 раз войдя пой своим акком в базу на сайте. После того как ты проголосовал, у тебя убирают возможность голосовать повторно с этогоже акка. Тоесть запрет идёт не на ай-пи, а на аккаунт, с которого голоснул человек )
Автор: XKoriKX: Дата: 06.16.2010
1)так будет невозможно голосовать с одного и тогоже акка 2 раза.
2) людям с динамическим айпишником будет возможно голосовать 2-ой раз только с другого акка.
Автор: Sanasol: Дата: 06.16.2010
1) Зачем?)
2) Это не важно. Пусть хоть 150 раз голосуют. Им придется голосовать а не просто кликать. Т.е. выгода все равно на стороне сервера т.к. голоса прибавятся.
Автор: dimjke: Дата: 01.21.2011
Sanasol, не работает
http://pwnagero.sytes.net/vote/
Автор: d[artiir]: Дата: 01.21.2011
Цитата dimjke;30891]Sanasol, не работает
[url]http://pwnagero.sytes.net/vote/[/url:
Автор: ValikDRV: Дата: 01.21.2011
Перепроверял много раз, и всегда одни и те же ошибки.
Было бы неплохо переписать скрипт и сделать желательно как здесь: http://r-ro.ru/?id=game100rus
Автор: Sanasol: Дата: 01.21.2011
Да как бы в первом посте обновил. уже такой как на реалро
Автор: dimjke: Дата: 01.21.2011
после строчек
$vote_ip = $check_ip["vote_ip"];
$pos = strpos($stranica, $userip);
if($myrow==null){ echo "
Такого аккаунта не существует!"; exit;}
Автор: Heart1ess: Дата: 01.22.2011
Sanasol
а как нащет дырок?
через ето голосования базу не сольют?
Сорь за тупой вопрос но в PHP нуп
Автор: Sanasol: Дата: 01.23.2011
Там сливать нету через что....
Автор: Sanasol: Дата: 01.24.2011
видишь же название полей другое. скрипт переписывал полностью.
Автор: Renegade: Дата: 01.24.2011
Чёртпобери! Как же я не заметил :)
Автор: dimjke: Дата: 01.25.2011
Кстати, если ещё сделать проверку в игре на ип, то по идеи у кого динамик накручивать не получится.
if(last_ip!=vote_ip){mes "ПНХ";close;}
Автор: unded: Дата: 01.25.2011
Можно еще другие параметры регистрировать, например разрешение экрана, ос, версию ос, браузера, и тп.
Чтобы бороться с накруткой=)
Автор: Sanasol: Дата: 01.25.2011
Код то гляньте. Раньше чем раз в 12 часов не проголосует.
Автор: Neqste: Дата: 02.01.2011
сорь конечно за офтоп, базу сливают обычно когда имена по дефолту стоят. А еще больше сливов, потому что даже пароли не сменены. Зы, меняйте имена господа. в интер.конф, и в БД.
Автор: ShadowOfLight: Дата: 02.01.2011
По поводу скрипта с сайта ЛГ, заметил, что отсутствуют exit'ы после проверок.
Т.е. если пользователь повторно пытается получить пойнты, система ему радостно сообщит, что он уже получил своё, но голоса прибавит =)
Автор: Sanasol: Дата: 02.01.2011
1. Кликаете на баннер:
2. Голосуете
3. Выбираете Топ в котором вы проголосовали
/*
Добавить в таблицу login 5 полей:
ALTER TABLE `login` ADD `vote` INT( 5 ) NOT NULL DEFAULT '0',
ADD `vote_time` INT( 100 ) NOT NULL DEFAULT '0',
ADD `vote_ip` VARCHAR( 100 ) NOT NULL DEFAULT '0',
ADD `vote2_time` INT( 100 ) NOT NULL DEFAULT '0',
ADD `vote2_ip` VARCHAR( 100 ) NOT NULL DEFAULT '0'
*/
include("./config/db.php");
@mysql_select_db($rodb,$db);
$game100rus = "http://game100rus.com/sitedetails_10883.html"; // Страница сервера на game100rus.com
$landgame = "http://land-game.ru/index.php?do=sitedetails&id=48"; // Страница сервера на land-game.ru
if (isset($_POST['vote'])) {
if ($_POST['login'] == '') { echo "
Вы не ввели логин"; }
if ($_POST['top'] == '') { echo "
Вы не выбрали Топ"; }
if ($_POST['top'] == 'game100rus') {
$user = trim($_POST['login']);
$result = mysql_query ("select * from `login` WHERE `userid`='$user'",$db) or die(mysql_error());
$myrow = mysql_fetch_array($result);
$curr_time = time();
$vote_time = $myrow["vote_time"];
$stranica = file_get_contents($game100rus);
$userip = $_SERVER['REMOTE_ADDR'];
$ip = mysql_query ("select * from `login` WHERE `vote_ip`='$userip' and `userid`<>'$user'",$db) or die(mysql_error());
$check_ip = mysql_fetch_array($ip);
$vote_ip = $check_ip["vote_ip"];
$pos = strpos($stranica, $userip);
if (($curr_time-$vote_time) < 3600*12) { echo "
Вы голосовали менее 12 часов назад";} else {
if ($vote_ip == $userip) { echo "
Вы уже голосовали"; } else {
if ($pos === false) {
echo "
Вы не проголосовали. " ;
} else {
$curr_time = time();
$update_vote = mysql_query ("UPDATE `login` set `vote`=`vote`+'1', `vote_time`='$curr_time', `vote_ip`='$userip' WHERE `userid`='$user'",$db) or die(mysql_error());
$points = mysql_query ("select * from `login` WHERE `userid`='$user'",$db) or die(mysql_error());
$points2 = mysql_fetch_array($points);
do
{
printf("
У вас %s голоса(-ов)
",$points2["vote"]);
}
while ($points2 = mysql_fetch_array($points));
echo "
Бонус зачислен.";
}}
}
} else {
$user = trim($_POST['login']);
$result = mysql_query ("select * from `login` WHERE `userid`='$user'",$db) or die(mysql_error());
$myrow = mysql_fetch_array($result);
$curr_time = time();
$vote_time = $myrow["vote2_time"];
$stranica = file_get_contents($landgame);
$userip = $_SERVER['REMOTE_ADDR'];
$ip = mysql_query ("select * from `login` WHERE `vote2_ip`='$userip' and `userid`<>'$user'",$db) or die(mysql_error());
$check_ip = mysql_fetch_array($ip);
$vote_ip = $check_ip["vote2_ip"];
$pos = strpos($stranica, $userip);
if (($curr_time-$vote_time) < 3600*12) { echo "
Вы голосовали менее 12 часов назад";} else {
if ($vote_ip == $userip) { echo "
Вы уже голосовали";} else {
if ($pos === false) {
echo "
Вы не проголосовали.";
} else {
$curr_time = time();
$update_vote = mysql_query ("UPDATE `login` set `vote`=`vote`+'1', `vote2_time`='$curr_time', `vote2_ip`='$userip' WHERE `userid`='$user'",$db) or die(mysql_error());
$points = mysql_query ("select * from `login` WHERE `userid`='$user'",$db) or die(mysql_error());
$points2 = mysql_fetch_array($points);
do
{
printf("
У вас %s голоса(-ов)
",$points2["vote"]);
}
while ($points2 = mysql_fetch_array($points));
echo "
Бонус зачислен.";
}}
}}
}
?>
Автор: MaXi: Дата: 02.01.2011
не реально крутой скрипт!!Продолжайте в том же духе!!молодцы ребята!
Автор: Sanasol: Дата: 02.09.2011
db.php
$host = "127.0.0.1";
$user = "asdqwee";
$pass = "asdaweffqwe";
$rodb = "ragnarok";
$db = mysql_connect($host, $user, $pass) or die(mysql_error());
Автор: Asuma: Дата: 02.12.2011
Советую использовать переменную XXXX_DEBUG чтобы скрывать ошибки от простых пользователей.
define('SAN_DEBUG', true);
include(DIRNAME(__FILE__) . '/config/db.php');
$db = mysql_connect($host, $user, $pass);
if ( !$db )
{
if ( SAN_DEBUG )
{
die(mysql_error());
}
else
{
die('Ошибка подключения к серверу');
}
}
Автор: Nester: Дата: 03.01.2011
Спасибо, Сань!
Автор: dimjke: Дата: 03.04.2011
Каким то образом голоса пошли в минус у тех, кто часто голосовал за сервер и воспользовавшись этим, они брали у нпц тцг и всякие плюшки сколько душе угодно, голоса при этом не убавлялись вообще. Просьба исправить.
Автор: The nepcuk: Дата: 03.12.2011
Всё проблем нет_)
Автор: vixa2012: Дата: 03.24.2011
Чтото не работает скрипт ввожу логин пишет
Unknown column 'vote_ip' in 'where clause'
Автор: [OneLife]: Дата: 03.24.2011
В таблицу логин новые поля добавил?
Автор: vixa2012: Дата: 03.25.2011
А сорь сделал поля голоса зачисляет но когда я для прикола ввожу тот же ник после того как проголосовал пишет
Unknown column 'vote2_ip' in 'where clause'
Автор: Кеник: Дата: 03.25.2011
Ты не поверишь... Капитан Очевидность на ушко подсказывает, что у тебя нет в таблице логин поля vote2_ip (заметь, это уже не vote_ip как раньше..)
Автор: vixa2012: Дата: 03.25.2011
Все разобрался спс всем скрипт ваще песня
Автор: Kill Spirit: Дата: 03.25.2011
[FONT="Comic Sans MS"]Нажми на кнопку, вместо своего унылого "спасибо", бездарь.[/FONT]
Автор: Gamlet1992: Дата: 04.12.2011
Ребят,взял скрипт,но почему-то он вообще не реагирует,ни на что: вот посмотрите http://dirtyro.ru/golos
Или так и должно быть?
И да,воут поинты не начисляются,прошу вас помочь решить эту проблемку))
Автор: vixa2012: Дата: 04.13.2011
Ты в бд создал таблицы vote, vote_ip, vote_ip2 и т.д?
Автор: Less: Дата: 05.27.2011
там дырочки были, прикрыл?)
мне смотреть лениво :)
Автор: Sanasol: Дата: 05.27.2011
какие?
Автор: Less: Дата: 05.27.2011
ну например я помню были
$user = trim($_POST['login']); и еще что-то.
плюс был баг, который позволял накручивать 100500 поинтов за 1 голосование, поскольку после голосования сессия не убивалась.
Автор: Less: Дата: 05.27.2011
точнее после начисления голоса сессия не убивалась.
Автор: Sanasol: Дата: 05.27.2011
Поправил для $user фильтр
Там нет никаких сессий. Время голосования в базу пишется от этого и отталкиваемся.
Автор: Less: Дата: 05.27.2011
ну по факту, есть баг, позволяющий зачислять себе дофиха голосов за 1 раз.
там надо die ставить после начисления голоса.
Автор: Sanasol: Дата: 05.27.2011
Никак он не зачислит больше чем можно. Он проверяет всё время. А если Ctrl+R всё равно данные из базы возьмутся уже
Автор: Кеник: Дата: 05.27.2011
Демагоги епть...
Less, возьми, да загони один из серверов в 1000+ голосов и нет проблемы. Сан убедится, что он ошибся и поправит + вернет голоса на место. Ну или наоборот, ты убедишься, что все фпаряде и забьешь :D
Автор: Less: Дата: 05.27.2011
мне накручивали так голоса умельцы, 1 человек голосов 50 накрутил, проголосовав 1 раз, пришлось исправлять скрипт :(
в принципе я не настаиваю и особо не утверждаю ничего, просто у меня был прецедент с этим скриптом, поэтому отписалась. Остальное ваше дело.
я не умею читить увы и ах :(
Автор: vixa2012: Дата: 05.31.2011
Скрипт я проверял на множество багов но он начисляет 1 раз в сутки у меня, также у меня не постоянное айпи перезагрузил нет и серавно показует что я голосовал я так багов короче ненашол
ну скрипт можно поломать если в строку "введите ник" или в браузере в строчку "поиск" ввести какойто скрипт который может сделать изменения в твоей бд если ты убереш в .htaccess
php_flag magic_quotes_gpc Off
php_flag magic_quotes_runtime Off
то тогда может и все нормально у тебя на сайте будет, а лучше написать функцию, которая заблокирует возможность вписать, что - то лишнее, в те или иные строки поиска, я видел недавно на некотором сайте чувак попробовал прописать в поисковик и зделал шикарные изменения в базе сайта также можно написать скрипт и тоже сработает так что надо в пшп отключать маджик куоте
Автор: rura: Дата: 06.05.2011
есть дыра в самом нпц.
Автор: Less: Дата: 06.05.2011
Скрипт я проверял на множество багов но он начисляет 1 раз в сутки у меняну у меня на сервере умельцы накрутили за день себе 70+ голосов, на 1 акк. Значит ты плохой поисковик.
Автор: vixa2012: Дата: 06.05.2011
Чаки они могли накрутить голоса через wpe pre ну и более современные проги
Купи себе защиту и будет все куль ну от впе и пре точно защитит
Автор: rura: Дата: 06.05.2011
для тех кому важен сервер, пересмотрите какая здесь переменная и какая проверка в скрипте.
Автор: Sanasol: Дата: 06.06.2011
нпц то уж здесь как раз и своего нужно ставить. здесь просто пример
Автор: Less: Дата: 06.06.2011
Чаки они могли накрутить голоса через wpe pre ну и более современные прогиубейся, они накрутили без доступа к серверу, только через голосовалку.
Автор: Кеник: Дата: 06.06.2011
Цитата Less;42920:
убейся, они накрутили без доступа к серверу, только через голосовалку.
Автор: Less: Дата: 06.06.2011
Пруфом на что? на то как накрутили? это каким образом?
пруфом на сервер? да нет его уже :) был мой фейл, полезла в те дебри в которых ничего не понимаю, все таки хай уровни не для мя :) но попробовать было интересно :)
дырка пофикшена, я сказала о ней, дальше ваше дело.
А то, что vixa2012, который 3 месяца назад просил скрипт регистрации и т.п., не смог найти в нем дырочку, совсем ни о чем не говорит.
И еще, если ты считаешь себя крутым, от того, что поставил себе рсп, то, боюсь, тебе предстоит очень сильное разочарование.
Да, изначальный скрипт был взят с ЛГ, возможно тут переделано, но сомневаюсь.
Автор: Кеник: Дата: 06.06.2011
Цитата Less;42924:
Пруфом на что? на то как накрутили? это каким образом?
пруфом на сервер? да нет его уже :) был мой фейл, полезла в те дебри в которых ничего не понимаю, все таки хай уровни не для мя :) но попробовать было интересно :)
дырка пофикшена, я сказала о ней, дальше ваше дело.
А то, что vixa2012, который 3 месяца назад просил скрипт регистрации и т.п., не смог найти в нем дырочку, совсем ни о чем не говорит.
И еще, если ты считаешь себя крутым, от того, что поставил себе рсп, то, боюсь, тебе предстоит очень сильное разочарование.
Да, изначальный скрипт был взят с ЛГ, возможно тут переделано, но сомневаюсь.
Автор: Less: Дата: 06.06.2011
не скринилось ничего, просто голоса обнулили, прикрыли дырку, и поставили контроль за общим кол-вом голосов.
Если ты не ставил рсп, то ты не должен чувствовать себя крутым!
Автор: Кеник: Дата: 06.06.2011
Цитата Less;42928:
не скринилось ничего, просто голоса обнулили, прикрыли дырку, и поставили контроль за общим кол-вом голосов.
Если ты не ставил рсп, то ты не должен чувствовать себя крутым!
Автор: Sanasol: Дата: 06.06.2011
Какая дырка то?
Автор: Кеник: Дата: 06.06.2011
В нпц? Не тот тип переменной.. В голосовании? Хз, у неё узнавай (:
Автор: Sanasol: Дата: 06.06.2011
caspen,184,212,5 script Голосование 88,{
//Обнулим.
set .dp,0;
//Получили данные о счете.
query_sql "SELECT `vote` FROM `login` WHERE `account_id` = '"+getcharid(3)+"'",.dp;
//Если .dp=0 значит надо пополнить счет
if(.dp < 1){mes "[Голосование]"; mes "Сначала проголосуйте"; close;}
mes "[Голосование]";
mes "У вас ^ff0000"+.dp+"^000000 очков голосования";
mes"Хотите получить очки?";
switch(select("Да:Нет")){
case 1:
//Вычитаем.
set .count,.dp;
set .dp,0;
//Перезаписываем в базу.
query_sql "UPDATE `login` SET `vote` = '"+.dp+"' WHERE `account_id` = '"+getcharid(3)+"'";
//Выдаем.
callfunc "add_points",getcharid(3),3*.count,"Голосование","none";
mes "Пока!";
close;
break;
case 2:
close;
break;
}
}
Автор: vixa2012: Дата: 06.06.2011
Ну я эти скрипты на баги не тестил усердно потому как мне похрену на него
3 месяца назад я про PHP только мог слышать и практически нихрене в нем не рубил я выучил много курсов попова и по его методике построил несколько сайтов скоро возьмусь чтото серьезное делать
Автор: Less: Дата: 06.07.2011
я выучил много курсов попова
Автор: Sanasol: Дата: 06.07.2011
Это тот который помидоры в жопу пихает или который болдженОС изобрёл?
Автор: vixa2012: Дата: 06.09.2011
Не тот и не тот)))