Скрипт лототрона на PHP

Blog by admin: PHP скрипты и решения: Скрипт лототрона на PHP

Простой скрипт лототрона для проведения розыгрышей между пользователями социальной сети «Вконтакте». Скрипт имеет таймер обратного отсчета. По окончании времени начинается эффектный процесс определения победителя. Список участников формируется администратором. Имена и ссылки на анкеты пользователей вписываются в отдельный текстовый файл с помощью любого текстового редактора.
На данный момент лототрон заточен только на проведение розыгрышей между анкетами пользователей «Вконтакте», но при желании и наличии прямых рук можно заточить под что угодно.
Изначально скрипт делался для собственных нужд. Но в связи с тем, что розыгрыши уже не проводим, решил выложить в открытый доступ.

Возможности:
1.Указание времени проведения розыгрыша
2.Таймер обратного отсчета
3.Динамический и эффектный выбор случайного победителя.

История
Не так давно, да и сейчас, «Вконтакте» в сообществах было популярно устраивать различные розыгрыши. Наиболее распространенный вариант — это требовалось сделать себе на стену репост записи о розыгрыше и набрать у себя на стене еще какое-то количество репостов от своих друзей. После чего участник подает заявку, администратор проверяет и вносит пользователя в список участников розыгрыша. Далее, по завершении срока подачи заявок требовалось провести розыгрыш приза. Тут у всех начинались трудности. Обычно процесс розыгрыша выглядел так. Администратор берет камеру (в лучшем случае скачивает программу для захвата видео с экрана), заходит на какой-то сайт генерации случайных чисел и начинает снимать, как он генерирует случайное число. В свою очередь, выпавшее число является номером участника. Потом это видео заливают в сообщество, чтоб люди посмотрели как проходил розыгрыш. Как по мне, то такой способ проведения розыгрыша довольно глупо выглядит.
Итак. Для одной из моих групп было решено провести розыгрыш приза. Делалось это все в целях привлечения людей в паблик. Долго думали, как организовать процесс выбора победителя. В итоге решили написать маленький скрипт лототрона, который бы по истечении времени подачи заявок автоматически выбрал победителя. Сам я с программированием не очень дружу. Попросил написать скрипт друга. В итоге получился очень интересный и эффектный скрипт. Юзеры могли пройти по ссылке и посмотреть, сколько еще осталось до розыгрыша, а также список участников. Ключевую роль играл сам процесс розыгрыша. По истечении времени подачи заявок, в течение нескольких секунд скрипт начинал перебирать имена из списка. В итоге останавливался на победителе, который определялся в рандомном порядке. При обновлении страницы, имя победителя так и оставалось навечно висеть в блоке вместо таймера. Таким образом, если участник не успел зайти на страницу до начала розыгрыша, то он увидит уже выбранного победителя. Конечно же, можно было сделать, чтоб скрипт розыгрыша выбирал фейкового победителя, но от этой идеи мы отказались. Если честно, то пожалели. Выиграл тогда участник из России. Стоимость пересылки приза почтой получилась дороже, чем сам приз. :)

Установка и настройка
Установка и настройка скрипта требует некоторого времени, так как лототрон не имеет админки. Как я уже писал выше, скрипт делался для собственных нужд. Было решено, что корона не упадет, если будем настраивать и даже заполнять базу участников с помощью FTP клиента и текстового редактора. Итак. Начнем установку.

Для работы скрипта потребуется хостинг с php 5.3 и доступом к cron jobs.

1. Берем любой FTP клиент и забрасываем все файлы лототрона из архива в нужную папку на хостинге.
2. Открываем любым текстовым редактором файл lototron.php, который лежит в корне.

Строка 8. Выставляем ваш часовой пояс. Это требуется для того, чтоб в таймере обратного отсчета было одно и то же время для всех посетителей страницы. Не важно, с какой страны они бы зашли. Таким образом, у каждого посетителя розыгрыш будет стартовать в один и тот же момент.

date_default_timezone_set('Europe/Kiev');

Если вы не из Украины, то правильный формат написания часовой зоны можно найти по этой ссылке.

Строка 11. Выставляем время начала розыгрыша.

$lottery['datetime'] = '01.10.2013 18:00:00';

01.10.2013 — дата
18:00:00 — время

3. Далее открываем панель управления хостингом. Находим в ней планировщик задач cron и добавляем новое задание. В появившейся форме требуется задать следующее:

/usr/bin/wget -O - -q -t 1 http://ваш-сайт.ru/lototron.php?action=start-lototron032784

Вместо «адрес-сайт.ru» вписываем ваш адрес. В случае, если скрипт лототрона лежит не в корне, требуется указать полный путь. Например:

http://адрес-сайт.ru/папка/папка-со-скриптом

Время выполнения выставляем аналогичное тому, что мы вписывали в файл lototron.php в строке #11. Каталогу U333 выставляем права на запись.
В случае, если что-то пошло не так, задание не выполнилось в указанное время, можно запустить вручную ссылкой:

http://ваш-сайт.ru/lototron.php?action=start-lototron032784

4.Наполняем базу участников. Список участников находится в файле /u333/ubase.txt.
Каждый новый участник записывается с новой строки в формате Имя|id-профия-вконтакте. Каждое имя|id вводим с новой строки. Обязательно требуется ставить разделитель между именем и ID в виде знака "|". Допускается вместо ID вписывать символы. (Во Вконтакте уже можно менять ссылку на профиль и ID уже мало у кого сохранились). В итоге мы получаем следующее(пример):
Постовой | id155154546545
Анимексиканец | id1551545464343545
Artuelle Lab | artuelle
Программист Петр | postovoynet
Брэд Питт | id15515454654588
Виктор Павлик | postovoynet
Василий Пупкин | postovoynet
Иван Иванович Иванов | postovoynet
Джонни Депп | postovoynet
Петя | postovoynet
Вася | postovoynet
Маша | postovoynet

5. Правка шаблона. Открываем файл index.html и, при желании, меняем:
Код виджета соовщества Вконтакте — Строка #91. Получить виджет своего сообщества можно тут.
Ссылка в кнопке «Подать заявку» — Строка #74.
Текст во всплывающих окнах, которые появляются при нажатии на кнопки «Почему меня нет в списке» и «Правила» меняем в файлах, которые находятся в папке «».
Краткое описание приза + фото — Строка #45.
Логотип меняем обычной заменой файла img/logo.png.
Вот и все. Сохраняем все файлы на сервере. Скрипт лототрона на PHP для розыгрышей вконтакте готов к работе. Остается только постепенно наполнять базу участников и ждать старта розыгрыша. При желании можно с легкостью переверстать шаблон и сделать внешний вид красивее. К примеру вы можете сделать все в стиле Landing Page.

Демонстрация
Итак. Давайте посмотрим, как ведет себя скрипт лототрона в деле. Для начала несколько скринов.

Ожидается розыгрыш
Blog by admin: PHP скрипты и решения: Скрипт лототрона на PHP

Розыгрыш закончился Имя победителя подсвечивается красным. На скрине почти все имена красные в связи с тем, что ссылки на профили одинаковы. В реальном розыгрыше будет только одно подсвеченное имя.
Blog by admin: PHP скрипты и решения: Скрипт лототрона на PHP

Видео процесса определения победителя


Демо и Скачать
Ссылка на демонстрацию скрипта
Ссылка на скачивание скрипта лототрона

P.S. За доработкой скрипта обращайтесь в ЛС. Вопросы по работе скрипта обсуждаем в комментариях.
Напишите свой комментарий
comments powered by HyperComments