Все про Интернет
       (N 384) 2011 - 2012
        << Архив передач >>
 Логин:  Пароль:
[регистрация]     запомнить 
 Поиск по сайту:
[Сайты зрителей] [Рейтинг] [Статьи] [Форум] [Блог] [Киберспорт] [Конкурсы] [О передаче]
 

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


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

Начнём с того зачем нам голосование ?
Как вы видели на сайте im.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


[Переход к списку статей]

 
 

[Видеоархив]

Передача создана дизайн-студией Conus Video
По вопросам размещения рекламы или информации в передаче Internet@Mania пишите imania@mail.zp.ua, или звоните
8(0612)63-80-84


Share |
 
 


Провайдеры Запорожья
zp-provider.narod.ru
providers.portall.zp.ua
Домовые сети
linet.zp.ua
setka.zp.ua
biscom.zp.ua
homenet.zp.ua
www.16x.zp.ua
www.ss.zp.ua
www.skynet.zp.ua
www.watson.zp.ua
www.link.zp.ua
www.kichkas.net
www.neuro.zp.ua
innkom.zp.ua
Каталоги Запорожья
www.otvet.zp.ua
www.portall.zp.ua
www.zaporozhye.org
www.spravka.zp.ua
Форумы
www.forumzone.zp.ua
forum.mail.zp.ua
forum.tinet.zp.ua
forum.nulled-warez.org
forum2.biscom.zp.ua
myforum.net.ua
forum.ru-board.com
forstud.org.ua
Чаты
chatzone.zp.ua
4at.zp.ua
chatinet.zp.ua
chatik.zp.ua
Компьютерные сайты
www.ixbt.com
www.techlabs.ru
www.thg.ru
www.overclockers.ru
Игровые сайты
www.games.zp.ua
www.ag.ru
www.gamemag.ru
www.uaplay.com
www.gameg.info
Журналы
www.seti.com.ua
www.cpp.com.ua
www.shpil.com
www.chip.ua
Блоги
revolver.ru
dirty.ru
photoblog.ru
www.autoblog.ru

 
    Передача создана дизайн-студией Conus Video
    По вопросам размещения рекламы или информации в передаче Internet@Mania пишите нам imania@mail.zp.ua, или звоните 8(0612)63-80-84