Система голосования на PHP | | | | Дело было вечером, делать было нечего… Pink Floyd пел, Argon скучал, тут как «Echoes» зазвучал… И, зачарованный этой композицией, решил я написать свою систему голосования (или опрос, кому как нравится) на PHP. Сказано — сделано, скрипты готовы и я рад ими с вами поделиться. Сначала хотел назвать эту статью «Создаем систему голосования на PHP», но тогда бы пришлось детально объяснять алгоритмы работы моих скриптов. А мне сейчас не до этого, поэтому я просто приведу исходный код системы и объясню, как с ней работать. Возможности системы голосования- Поддержка нескольких голосований и их параллельная обработка.
- Возможность создания нового голосования через веб-интерфейс.
- Автоматическое генерирование HTML-формы голосования.
- Вывод результатов: в порядке ввода, по убыванию, по возрастанию.
- Настраиваемый вывод результатов голосования.
- Защита от «накрутки».
- Мало чем ограниченный потенциал к далнейшему наращиванию функциональности.
Примерно так можно настроить дизайн вывода результатовКомпозиция | Шкала | Голоса | % |
---|
Echoes | | 70 | 51.47% | Comfortably Numb | | 25 | 18.38% | Shine On You… | | 20 | 14.71% | Time | | 9 | 06.62% | Us And Them | | 6 | 04.41% | One Of These Days | | 6 | 04.41% | Всего голосов | | 136 | 100% | Установка системы голосования- Для работы системы голосования требуется сервер, поддерживающий PHP версии 4.2 и старше.
- Создайте на сервере отдельный каталог для системы (например, /voting/) и назначьте ему права на запись, проставив атрибуты 777.
- Скопируйте в этот каталог 4 php-файла, составляющие систему голосования:
- new.php — скрипт создания нового голосования
- form.php — скрипт генерации формы голосования
- write.php — скрипт обработки поступающих «голосов»
- echo.php — скрипт вывода результатов голосования
- Рекомендую сменить пароль для создания новых голосований, отредактировав значение переменной $password в файле new.php.
Создание нового голосования- Откройте в браузере свежезакачанный файл new.php, перед вами предстанет страница создания нового голосования.
- Введите свой пароль в поле «Pass».
- Введите имя будущего голосования в поле «Name». Имя голосования — это идентификатор, используя который вы сможете просмотреть результаты голосования, отдать голос или сгенерировать форму голосования. Во избежание каких-либо проблем, вводите имя, используя только маленькие латинские буквы и цифры.
- Начиная с поля «String0», введите варианты ответов голосования. Каждое поле — вариант ответа, который будет отображаться в форме голосования и на странице вывода результатов. Пустые поля не обрабатываются, восьми вариантов должно хватить.
- В разделе «Type» выберите тип формы голосования:
- «Checkboxes» — возможен выбор нескольких вариантов ответа (чекбоксы)
- «Radiobuttons» — возможен выбор только одного варианта ответа (радиокнопки)
- Для подтверждения введенных данных и создания нового голосования нажмите кнопку «Send».
- Если все прошло гладко и база данных голосования (имя_голосования.txt) успешно создана, вам вернется страница формой голосования. Если же не так гладко, то проверьте свои шаги, начиная с установки.
- Откройте исходный код сгенерированной страницы и скопируйте HTML-код формы голосования, предназначенный для вставки на страницы сайта (естественно, настройте дизайн).
- На этой же странице вам необходимо «отдать первый голос», чтобы сдвинуть с нуля общее количество голосов (при нулевом значении будут ошибки в арифметике, вроде деления на ноль).
- Новое голосование готово к «использованию»!
«Использование» системы голосования- Результаты голосования можно:
- получить при обращении к скрипту как echo.php?name=test, где test — имя голосования
- вставлять на любую страницу сйта с помощью технологии Server-Side Includes (SSI)
- вставлять в PHP-документы с помощью команды $name='test';include('echo.php');, где test — имя голосования
- Голосовать можно:
- используя форму голосования, которую предлагалось создать в разделе «Создание нового голосования»
- из скрипта генерации формы голосования, при обращении к нему как form.php?name=test&type=1 (параметр type определяет тип формы: 1 — чекбоксы, 2 — радиокнопки)
- Время действия защиты от «накрутки» определяется в переменной $days файла write.php (в днях).
- В файле echo.php можно поменять формат вывода результатов голосования (см. исходный код).
- Исходный код всех файлов системы голосования можно получить здесь.
- Проверить в действии тестовую систему голосования:
- Используя алгоритмы этой универсальной системы (я привел лишь элементарные скрипты), можно организовать систему голосования более сложную и надежную.
- Так что не стесняйтесь, модифицируйте систему под собственные нужды, это довольно просто даже при знаниях PHP на начальном уровне.
Уфф… Статья (если можно так назвать) и система голосования написаны менее чем за пол дня, с перерывами на сон, еду, слушанье музыки и другие виды деятельности. Так что хоть я и гонял эти скрипты в хвост и в гриву в поисках багов (Word предлагает «багор»), необнаруженные ошибки не исключены. Поэтому, при обнаружении оных, радируйте! | |
|
|