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

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

Postback PHP

Whitelist IP: monitor.topg.org in your Firewall Settings.

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

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

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


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

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

3. Наш ответ:

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


Пример:

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

Наш ответ в первом или втором случае будет:
https://YOURDOMAIN/postback.php?p_resp=1234&ip=123.123.123.123
https://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, minus and underscore
	$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
}

Minecraft Votifier

Minecraft Votifier

Whitelist IP: monitor.topg.org in your Firewall Settings.

Для Minecraft мы используем специальный плагин под названием votifier. Процесс голосования проходит так::
  1. Ваш игрок вводит свое имя пользователя в нашем шлюзе голосования
  2. Если он голосовал, мы посылаем ответ на ваш сервер, чтобы вы могли его вознаградить.
TOP: To auto-fill Minecraft username field change your voting link to this syntax:
https://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) во время тестирования новых топ-сайтов.