Проверка голосования

Используйте Postback, CheckIP или Votifier, чтобы проверить, голосуют игроки или нет

Что такое проверка голосования?

Это система, позволяющая проверить, голосуют ли игроки за ваш сайт или сервер, путем введения правильного кода безопасности капча при голосовании.

Postback

Чтобы установить ваш URL обратной отправки данных, перейдите в личный кабинет, нажмите на ваш сайт или сервер, затем используйте опцию Изменить конфигурацию.

1. Установите ваш URL-адрес обратной отправки данных (на TopG):

http://YOURDOMAIN/postback.php
Чтобы установить эту ссылку, воспользуйтесь опцией Изменить настройки на странице вашего сервера.
Имя файла postback.php - просто пример и не обязательно, можете назвать файл как вам угодно.


2. Обновите ссылку для голосования и добавьте параметр в конце:

http://topg.org/CATEGORY/in-SITEID-PARAMETER
Ваша ссылка для голосования TopG должна иметь дополнительный знак - и ПАРАМЕТР в конце. Скопируйте ССЫЛКУ из кода голосования и добавьте -USERNAME, или -123456, или что вам удобнее отслеживать (ПАРАМЕТР может содержать только цифры, буквы и _). Например, если я хочу проверить, голосует ли пользователь под именем `Razor`, я делаю ссылку http://topg.org/CATEGORY/in-SITEID-Razor.

3. Наш ответ:

TopG будет вызывать ваш сайт после голосования, и обратный вызов будет выглядеть как эта ссылка:
http://YOURDOMAIN/postback.php?p_resp=PARAMETER&ip=USERIP
Мы отправили вам обратно тот же ПАРАМЕТР, и вызов совершается ТОЛЬКО если пользователь проголосовал за вас. Ваш postback.php на этом этапе должен ОБНОВИТЬ пользовательский ПАРАМЕТР как Действительный. В случае, если пользователь не голосовал, мы не отправляем никакого ответа.


Пример:

Как должна выглядеть ваша ссылка для голосования для ID пользователя (первая) или имени пользователя (вторая):
http://topg.org/CATEGORY/in-SITEID-1234
http://topg.org/CATEGORY/in-SITEID-Razor

Наш ответ в первом или втором случае будет:
http://YOURDOMAIN/postback.php?p_resp=1234&ip=123.123.123.123
http://YOURDOMAIN/postback.php?p_resp=Razor&ip=123.123.123.123
Вывод: Игрок с ID аккаунта 1234 или именем пользователя Razor проголосовал за вас в случае, если мы вызвали вашу ссылку обратной отправки данных с параметром.
123.123.123.123 is the IP address used by the player to vote on Topg.
Пожалуйста, прочтите наш пример PHP, чтобы понять, как зафиксировать наш ответ. Мы вышлем вам HTTP-запрос обратного вызова, ТОЛЬКО если пользователь проголосовал за вас. Если вам нужна помощь с настройкой, пожалуйста, свяжитесь с нами.

How to fix voting callback on topg for Fusion CMS:
If you are using Fusion CMS go to /applications/modules/vote/plugins/topg.php and change line 21 to this:
return $this->CI->input->ip_address() == gethostbyname('monitor.topg.org');

postback.php example

define("DEBUG", 0); //set to 1 to enable debuger
define("LOG_FILE", "_postback.log"); //if debug is enabled will create this file for logs
define("TOPG_IP", gethostbyname("monitor.topg.org")); //This is TopG IP address

$ip_request = $_SERVER['REMOTE_ADDR']; //for Cloudflare $ip_request = $_SERVER["HTTP_CF_CONNECTING_IP"];
if($ip_request == TOPG_IP) //check if response is coming from TopG
{
	if(DEBUG == true) {	
	 error_log(date('[Y-m-d H:i] ')."[OK] Valid callback: $ip_request".PHP_EOL, 3, LOG_FILE);	 
	}
	
	//get the parameters response from us and clean them
	$p = preg_replace('/[^A-Za-z0-9\_]+/','',$_GET['p_resp']); //can be only numbers letters and _
	$user_ip = preg_replace('/[^0-9\.]+/','',$_GET['ip']); //can be only numbers and dots
	
	//connect to database
	
	//if using MySQL uncomment the following lines (remove slashes)
	//$p = mysql_escape_string($p); 
	//$user_ip = mysql_escape_string($user_ip);
	
	//or if using MySQLi (change $DB name to correct one)
	//$p = $DB->real_escape_string($p);
	//$user_ip = $DB->real_escape_string($user_ip);
	
	if(DEBUG == true) {	
	 error_log(date('[Y-m-d H:i] ')."[GET] Parameters [p_resp]=$p [ip]=$user_ip".PHP_EOL, 3, LOG_FILE); 
	}
	
	//Note: we send the parameters $_GET['p_resp'] and $_GET['ip'] back ONLY! if user $p has voted
	//here run your code
	//first you should check if account $p is valid and exists in your database
	//also check if the user has voted in the last 12 hours
	//give points to user $p that voted with ip $user_ip
	//close database
}
else
{
	if(DEBUG == true) {	
	 error_log(date('[Y-m-d H:i] ')."[Invalid] Invalid request: $ip_request".PHP_EOL, 3, LOG_FILE); 
	}
	//handle invalid request when callback is NOT from TopG.
	//ignore or log the $ip_request as invalid request in your database
}

CheckIP

Проверьте записи голосования по IP пользователя непосредственно в нашей базе данных

Просто запросите эту страницу, чтобы ее использовать:

http://topg.org/check_ip.php?siteid=SITE_ID&userip=USER_IP


Страница даст результат 1, если пользователь проголосовал за последние 12 часов, и 0, если он этого не делал.
В случае какой-либо ошибки, например, недостающего параметра или недействительных значений страница будет пустой.
Лучшая практика заключается в назначении отложенного времени проверки пользователя IP, через 10 минут после того, как пользователь проголосовал. Для этого вам нужно будет создать функцию, которая запускается каждые 10 минут и проверяет ТОЛЬКО тех пользователей, которые голосовали 10 минут назад или раньше.
Возможно, хорошим решением для отложенной проверки является создание Cron Job или Windows Task Scheduler в зависимости от вашей операционной системы.
Наш пример включает только вызов + результат, но мы можем помочь больше, если нужно. Просто свяжитесь с нами.

IP Check PHP example

$userip = $_SERVER['REMOTE_ADDR']; //get your player or user IP address
//or if Cloudflare $userip = $_SERVER["HTTP_CF_CONNECTING_IP"];
define(TOPG_CHECK,"http://topg.org/check_ip.php?siteid=SITEID&userip=".$userip); //replace SITEID with yours
$voted = @file_get_contents(TOPG_CHECK); //check url to see response for UserIP
if($voted)
{
	echo 'Valid! User with IP '.$userip.' has voted!';
}

Votifier

Minecraft Votifier

Для Minecraft мы используем специальный плагин под названием votifier. Процесс голосования проходит так::
  1. Ваш игрок вводит свое имя пользователя в нашем шлюзе голосования
  2. Если он голосовал, мы посылаем ответ на ваш сервер, чтобы вы могли его вознаградить.
TOP: To auto-fill Minecraft username field change your voting link to this syntax:
http://topg.org/Minecraft/in-SITEID-username

Как включить Votifier

Вы можете включить и настроить этот плагин в личном кабинете при добавлении или редактировании сервера.

Скачать и установить плагин

Вы можете найти плагин votifier на Bukkit или Curse: Download Votifier . Второй шаг - найти на форумах Bukkit хорошо работающий votifier listener, совместимый с вашей версией Minecraft.

Получить настройки votifier

PUBLIC KEY it's a long string file located: /plugins/Votifier/rsa/public.key. Copy-paste ALL of it.
VOTIFIER IP and VOTIFIER PORT settings can be found inside: /plugins/Votifier/config.yml
host: VOTIFIER IP //your external IP address, the one used to connect to play
port: VOTIFIER PORT //the default votifier port is 8192
debug: false //set to true to see connection details in console 
listener_folder: plugins/Votifier/listeners
Мы настоятельно рекомендуем включить отладку (Debug: True) во время тестирования новых топ-сайтов.