К нам на передачу часто поступают вопросы как сделать разного вида скрипты. Но я вообще программист, а не дизайнер - поэтому извиняйте за кривоту кода. Начнём с того зачем нам голосование ? Как вы видели на сайте 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 нулю. Пример : Теперь сам скрипт. 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 != "") && ($voted !="yes")){ | И заменяем } else { echo "<br>Результаты голосования"; } | На } else { if ($voted =="yes") { echo "Вы уже голосовали !"; } echo "<br>Результаты голосования"; } | Вуаля ! Скрипт ГОТОВ !!! Теперь голосуйте сколько хотите ! KLEVO |