Портал для веб-мастера
Вход пользователей
Поиск статей
WoWeb.ru » Статьи » Программирование для Web » PHP

Голосование на PHP

К нам на передачу часто поступают вопросы как сделать разного вида скрипты.
Но я вообще программист, а не дизайнер - поэтому извиняйте за кривоту кода.

Начнём с того зачем нам голосование ?
Как вы видели на сайте www.imania.zp.ua его используют чтоб узнать мнение пользователей . Голосование это один из лучших методов привлечение посетителей на сайт.

Начнём.
Для написания скрипта вам понадобится драйвер DLL_прямые_пальцы.

Вот что нам нужно будет вставить в HTML код, чтоб получить формочку.

<FORM METHOD="POST" action="vote.php">
<TABLE BORDER=1><TR><TD><TABLE BORDER=0>
<TR><TD>Вопрос голосования</TD></TR>
<TR><TD><INPUT TYPE=radio NAME=answer VALUE=0>Ответ №1</TD></TR>
<TR><TD><INPUT TYPE=radio NAME=answer VALUE=1> Ответ №2</TD></TR>
<TR><TD><INPUT TYPE=radio NAME=answer VALUE=2> Ответ №3</TD></TR>
<TR><TD><INPUT TYPE=radio NAME=answer VALUE=3> Ответ №4</TD></TR>
<INPUT TYPE="hidden" NAME=von VALUE="1"
<INPUT TYPE="hidden" NAME=a1 VALUE="Ответ №1"
<INPUT TYPE="hidden" NAME=a2 VALUE="Ответ №2"
<INPUT TYPE="hidden" NAME=a3 VALUE="Ответ №3"
<INPUT TYPE="hidden" NAME=a4 VALUE="Ответ №4"
<TR><TD>
<INPUT TYPE=Submit NAME=vote VALUE=" Отправить ">
</TD></TR>
<TR><TD>
<INPUT TYPE=Submit NAME=result VALUE=" смотреть результат ">
</TD></TR></TABLE></TD></TR></TABLE></FORM>


Надеюсь, все поняли смысл этого кода …
Я хочу объяснить только эту строку “<INPUT TYPE="hidden" NAME=von VALUE="1">”
Эта строка передаёт скрипту № голосования. Т.е. вы сразу можете проводить большое количество голосований.

Далее нам нужно будет в чём-то хранить статистику.
Для этого нам понадобится обычный файл.
Имя файла будет зависеть от № голосования.
Пример vote1.txt – для первого и т.д.
Обязательно если скрипт будет работать на *NIX платформе выставить права доступа
как 777 (Read/Write/eXecute)
Файл состоит из четырёх строк которые заполнены по 1 нулю.

Пример :
0
0
0
0

Теперь сам скрипт.

Vote.php
<?
$file = "vote".$von.".txt";
$a = file($file);
$i = 0;
$fi = Count($a)-1;
$n = 0;
while ($i <= $fi):
$a[$i] = trim(str_replace ("\n","", $a[$i]));
$n = $n+$a[$i];
$i++;
endwhile;

if ($answer != "") {
echo "<br>Спасибо, Ваше мнение учтено:";
$a[$answer]++; $n++;

$fp = @fopen($file,"w");
if ($fp) {
$counter=fputs($fp,$a[0]."
");
$counter=fputs($fp,$a[1]."
");
$counter=fputs($fp,$a[2]."
");
$counter=fputs($fp,$a[3]."
");
fclose($fp);
}
else { echo "Произошла ошибка записи результатов!"; }

} else { echo "<br>Результаты голосования"; }
echo "<br>".$a1." - <b>".$a[0]."</b>";
echo "<br>".$a2." - <b>".$a[1]."</b>";
echo "<br>".$a3." - <b>".$a[2]."</b>";
echo "<br>".$a4." - <b>".$a[3]."</b>";
echo "<br><br>Всего проголосовало: ".$n;
echo "<!-- Скрипт от KLEVO-SOFT специально для INTERNET@MANIA -->"
?>


Пару советов :

Я вообще ленивый человек , но не люблю оставлять дырки.

В данном голосование 1 человек может проголосовать хоть 100 раз , но мы это сейчас исправим.

Проверять по IP человека можно , но 1 сейчас есть много прокси серверов и можно просто перезвонить к провайдеру и ты получишь новый IP.
Но у меня идея покруче …
Cookies.
Но они работают не во всех браузерах.
Мысль состоит в том чтоб обрабатывать голосовал ли уже человек …
Допустим можно голосовать 1 раз в день .
Значит перед echo "<br>Спасибо, Ваше мнение учтено:";
Мы должны написать
setcookie("voted","yes",time() + 86400);
Если вам интересно что такое 86400 то это 1 день
1 день=24часа=24*60 минут=24*60*60 секунд или 86400 секунд.
Это значит что юзер целый день не сможет голосовать.

Далее заменяем
if ($answer != "")

На
if (($answer != "") && ($voted !="yes")){

И заменяем
} else { echo "<br>Результаты голосования"; }

На
} else {
if ($voted =="yes") {
echo "Вы уже голосовали !";
}
echo "<br>Результаты голосования"; }

Вуаля !
Скрипт ГОТОВ !!!
Теперь голосуйте сколько хотите !

KLEVO

Автор: KLEVO · Добавлена: 2003-07-03
Источник статьи · Просмотров: 7198 · Рейтинг: 3.6

Всего комментариев: 1
[1] Alex(exz) 2008-06-24, 2:27 PM
>Теперь голосуйте сколько хотите !

гагага, вот именно, голосуйте сколько хотите, куки даже легче удалить чем переключиться на проксик Спам


Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Категории раздела
Flash
Apache
WWW
PhotoShop
Веб-дизайн
Раскрутка и реклама
Базы данных
3D графика
Хостинг
Истории веб-мастеров
Web-технологии
Сетевая безопасность
Программирование для Web
Операционные системы

Новые статьи
Лучшие статьи
Популярные статьи
Комментируемые статьи
Разделы сайта
Скрипты
Статьи
Шрифты
Флэш исходники
HTML шаблоны
Партнерки
Клипарты
Смайлы
Фоны
Гифы
Иконки
Опрос сайта
Ведете ли вы блог?
Всего ответов: 60121
Наша кнопка
WoWeb.ru - портал для веб-мастера