Скрипт поощрения

Общий скрипт

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

Установка

Для установки потребуется наличие: базы данных (в примере используется MySQL), Phpmyadmin, планировщик Cron на хостинге (для автоматического выполнения скрипта).
Установка поделенна на пункты:
  1. Необходимо создать таблицу в базе данных MySQL, выполнив следующий код в Phpmyadmin:
    --
    -- Структура таблицы `qtop_vote`
    --
    
    CREATE TABLE IF NOT EXISTS `qtop_vote` (
      `id` int(20) NOT NULL AUTO_INCREMENT,
      `v_id` bigint(20) NOT NULL,
      `v_date` varchar(15) NOT NULL,
      `v_time` varchar(15) NOT NULL,
      `v_ip` varchar(20) NOT NULL,
      `v_username` varchar(50) NOT NULL,
      `v_type` int(2) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
            
    Либо выполнив код в PHP (после успешно соединения с базой данных):
    mysql_query("
    --
    -- Структура таблицы `qtop_vote`
    --
    
    CREATE TABLE IF NOT EXISTS `qtop_vote` (
      `id` int(20) NOT NULL AUTO_INCREMENT,
      `v_id` bigint(20) NOT NULL,
      `v_date` varchar(15) NOT NULL,
      `v_time` varchar(15) NOT NULL,
      `v_ip` varchar(20) NOT NULL,
      `v_username` varchar(50) NOT NULL,
      `v_type` int(2) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
    ");
            
  2. Необходимо поместить файл qtop_vote_reward.php на свой сайт в любую из директорий (туда же будет загружаться и статистика)
    
    	/* Конфигурация */
    	/* Данный скрипт подготовлен администраторами Q-top.ru, является шаблонным и требует небольшой доработки и внесения своих данных, также мы сможем вам помочь бесплатно в доработке скрипта, при условии, что вы являетесь участником рейтинга */
    	
    	# Данные, для соединения с базой данных (БД)
    	$connect['host_name'] 	= ''; # Где расположенна БД (пример: 77.221.158.190)
    	$connect['user_name'] 	= ''; # Имя пользователя БД (пример: user_db)
    	$connect['password'] 	= ''; # Пароль пользователя БД (пример: KGMG0014X)
    	$connect['db_name'] 	= ''; # Имя БД (пример: name_db)
    	
    	# Адрес статистики, его можно посмотреть в услугах на сайте - http://q-top.ru/index.php?op=panel&look=view_statistic 
    	# Например http://q-top.ru/profiles/10/100/f96s94yfx68819s00v77asxv.txt
    	$v_config['statistic_url'] = '';
    	
    	# Путь, куда будет скопирована статистика с Q-top.ru, на ваш сайт. По умолчанию это текущая директория.
    	$v_config['copy_dir'] = './';
    	
    	# Как будут называться файлы со статистикой, у вас на сайте. По умолчанию Q-top-08-2012.txt, где 08 - тек. месяц, 2012 - тек. год
    	$v_config['statistic_name'] = 'Q-top-'.date('m-Y').'.txt';
    	
    	# Максимальная длина ника/логина игрока
    	$v_config['user_max_length'] = 20;
    	
    	
    	
    	/* Подключение к БД */
    	# Устанавливаем соединение с базой данных (в данном примере используется MySql, возможно использовать и другие бд, например MSSQL)
    	$db = @mysql_connect($connect['host_name'], $connect['user_name'], $connect['password']);
    	if(!$db) die('Ошибка в подключении базы данных');
    	mysql_select_db($connect['db_name'], $db);
    	mysql_query("SET NAMES 'utf8'"); # Использование кодировки по умолчанию utf-8
    
    
    	
    	/* Операции с голосами */
    	# Копируем статистику с Q-top.ru на свой сайт, в дир. которая указана в начале
    	copy($v_config['statistic_url'], $v_config['copy_dir'].$v_config['statistic_name']);
    	
    	# Открываем файл статистики, который уже скопирован, на вашем сайте
    	$fd = fopen($v_config['copy_dir'].$v_config['statistic_name'], 'r');
    	while (!feof($fd))
    	{
    
    		# Считываем построчно данные из блокнота
    		$str = fgets($fd, 1024);
    		
    		
    		# Разбиваем строку $str на отдельные элементы, используя в качестве разделителя ||
    		list($vote['id'], $vote['date'], $vote['time'], $vote['ip'], $vote['user_name'], $vote['type']) = explode('||', $str);
    		
    		
    		# Обрезаем возможные пробелы ника/логина игрока, который он может ввести при голосовании
    		$vote['user_name'] = trim($vote['user_name']);
    		
    		
    		# Голоса без ников/логинов не обрабатываем, т.к. начислять поощрение некому. Переходим к следующему голосу
    		if (empty($vote['user_name'])) continue;
    		
    		# Обрезаем возможные пробелы у типа голоса
    		$vote['type'] = trim($vote['type']);
    
    		# Проверяем длину ника/логина, если она не удолетворяет заданному значению, то данный ник будет игнорироваться и цикл перейдет к следующему голосу 
    		if (strlen($vote['user_name']) > $v_config['user_max_length']) continue; 
    		
    		
    		/* Ниже приведены примеры проверки ника/логина на вводимые игроками символы, вы можете выбрать одну из них, для этого раскомментируйте одну из строк (удалите знак # перед выражением). Различаются они составом регулярного выражения */
    
    		# В нике/логине допустимы следующие символы: a-zA-Z0-9
    		# $vote['user_name'] = preg_replace("/[^a-zA-Z0-9]/", '', $vote['user_name']);
    		
    		# В нике/логине допустимы следующие символы: а-яА-Яa-zA-Z0-9
    		# $vote['user_name'] = preg_replace("/[^а-яА-Яa-zA-Z0-9]/", '', $vote['user_name']);
    		
    		# В нике/логине допустимы следующие символы: a-zA-Z0-9_-
    		# $vote['user_name'] = preg_replace("/[^a-zA-Z0-9\_\-]/", '', $vote['user_name']);
    		
    		# В нике/логине допустимы следующие символы: а-яА-Яa-zA-Z0-9_-
    		$vote['user_name'] = preg_replace("/[^а-яА-Яa-zA-Z0-9\_\-]/", '', $vote['user_name']);
    		
    		
    		
    		# Проверяем по таблице qtop_vote, был ли уже учтен голос
    		if ($test = mysql_num_rows(mysql_query("SELECT `v_id` 
    													FROM qtop_vote 
    														WHERE `v_id`='".$vote['id']."' ")) > 0) continue;
    		
    		
    		# Вставляем в базу qtop_vote новый голос
    		$insert = mysql_query("INSERT INTO qtop_vote 
    								(v_id, v_date, v_time, v_ip, v_username, v_type) 
    									VALUES ('".$vote['id']."', '".$vote['date']."', '".$vote['time']."', '".$vote['ip']."', '".mysql_real_escape_string($vote['user_name'])."', '".$vote['type']."')");
    		 
    		
    		 # Если запрос вставки прошел успешно, то переходим к начислению поощрения
    		 if ($insert)
    		 {
    		
    			/* Здесь вам необходимо выполнить запрос на проверку, существует ли ник/логин ($vote['user_name']) на вашем сервере, если да, то необходимо выполнить 2-ой запрос на поощрение, как вы понимаете, у каждого проекта и игры поощрения разные, в разных таблицах и это может быть не просто кредиты или бонусы, а выдача вещей и т.д. Если вы считаете, что не сможете доделать до конца, то свяжитесь с нами по скайпу: q-top.ru поможем. */
    		 	
    		 }
    		 
    	
    	}
    
    
    	/* Если у вас имеются идеи по улучшению, сообщайте по скайпу: q-top.ru или в группу в vk: http://vk.com/club36638011 рассмотрим! */
    	
    
            
            
            
            
      
    
    	
    	
  3. Теперь необходимо настроить Cron (для автоматического выполнения скрипта). Cron находится на вашем хостинге сайта, задайте промежуток времени, по прошествии которого скрипт будет автоматически выполняться, например каждый день, раз в 4 часа.
    Описание Cron при использовании панели ISP manager, если у вас отсутствует данная панель управления, то необходимо уточнить у хостеров, имеется ли возможность использовать Cron.
Если вы захотите очистить таблицу с голосами (в этом нет большой необходимости), то делайте это в последний день месяца.