| imho.ws |
![]() |
|
|
|
# 1 |
|
::VIP::
Регистрация: 09.05.2002
Адрес: Lithuania
Сообщения: 591
![]() |
как мне записать Кукиз (поставить) в файле обработки голосования и при наличии куки- отказать добавить голос...
ето выглядит так ? setcookie($voted); if($voted=1) { echo " izvenite vy golosovali " } так ?? |
|
|
|
|
# 2 |
|
Guest
Сообщения: n/a
|
Вот как можно сделать:
(хэдеры вначале я ставлю, чтобы не кэшировалось в браузере, можно не ставить, но для отладки хорошо, а то бывает, данные новые, а браузер из своего кэша берет старье.) <? Header("Content-type: text/html"); header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 header("Pragma: no-cache"); // HTTP/1.0 ?> <html> <body> <? $vdata = $HTTP_COOKIE_VARS["voted"]; //$vdata=знач. куки if ($HTTP_COOKIE_VARS["voted"]!=null) //если была кука сегодня echo $vdata."Вы не можете голосовать больше 1 раза в день"; else { setcookie ("voted", "Sorry. ",time()+864000); // кука на 1 день echo "OK. Кука послана."; } ?> </body> </html> А вот для удаления куков пример: <? if (0<sizeof($HTTP_COOKIE_VARS)) { while (list ($k_cookie, $v_cookie) = each ($HTTP_COOKIE_VARS)) { setcookie($k_cookie,time()-3600); } } ?> Последний раз редактировалось v_ilya; 19.11.2002 в 17:38. |
|
|
# 3 |
|
::VIP::
Регистрация: 09.05.2002
Адрес: Lithuania
Сообщения: 591
![]() |
ошибку выдает :
setcookie ("voted", "Sorry. ",time()+864000); // кука на 1 день Warning: Cannot add header information - headers already sent by (output started at w:\home\localhost\www\cookie.php:10[/url]) in w:\home\localhost\www\cookie.php[/url] on line 11 |
|
|
|
|
# 5 |
|
Guest
Сообщения: n/a
|
Вообще, я использую в php.ini директиву
output_buffering = On чтобы можно было хэдеры слать и куки в любом месте. Бывают такие необходимости. А чтобы многозначные куки слать, вот это вообще сложно!!!(шутка). Допустим, у тебя на странице 4 голосования, дак ты на обработку каждого голосования и присваивай куке конкретное значение или лучше даже шли куку с названием этого голочования. Вот пример: Допустим, $ques=№ голосования (1-4). $voted="voted#".$ques; // А дальше всё так же. $vdata = $HTTP_COOKIE_VARS["voted"]; //$vdata=знач. куки if ($HTTP_COOKIE_VARS["voted"]!=null) //если была кука сегодня echo $vdata."Вы не можете голосовать больше 1 раза в день"; else { setcookie ("voted", "Sorry. ",time()+864000); // кука на 1 день echo "OK. Кука послана."; } |
|
|
# 6 |
|
::VIP::
Регистрация: 09.05.2002
Адрес: Lithuania
Сообщения: 591
![]() |
сенкс. и еще один вопрос
как мне избавиться от такой проблемы ? :у меня прописана форма <form action=../include/polls/golos1.php method=post target="_result" onSubmit="window.open('../include/polls/golos1.php','_result', 'toolbar=0,location=0,scrollbars=0,width=400, height=240,resizable=0,left=30,top=30');"> она получается открывает golos1.php а затем опять автоматом редирект на golos1.php и срабатывает куки ![]() как мне от етого избавиться ? |
|
|
|
|
# 7 |
|
Guest
Сообщения: n/a
|
Можно попробовать передать параметр в golos1.php :
<form action=../include/polls/golos1.php?cooked=yes ...> ну а там в golos1.php анализировать этот параметр: if ($cooked=="yes"){ // если стоит output_buffering = On header("Location: ../include/polls/golos.php?cooked=yes"); } А вообще, надо бы исходники посмотреть твоего голосования, чтобы сказать точно. Я вот голосование у себя на корпоративном сайте http://www.scpsayansk.ru делал, так в базу Oracle результаты пишу. Так удобнее. Не знаю, поможет ли тебе это но рабочий вариант это. Вот scpvote.php <? Header("Content-type: text/html"); header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 header("Pragma: no-cache"); // HTTP/1.0 $db = "(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.200)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = tst)))"; $connect = ocilogon("tst","tst",$db); $v10=array(-1,-1,-1,-1,-1,-1,-1,-1,-1,-1); $n10=array('','','','','','','','','',''); $vmax=array(-1,-1,-1,-1,-1,-1,-1,-1,-1,-1); $maxtemp=0; $maxtempv=0; $Nameopr=''; $cook_old=0; $date = date("ymd", time()); if ($vote!=11){ $voten="JSK_VOTE#".$ques; $cdata = $HTTP_COOKIE_VARS[$voten]; if ($HTTP_COOKIE_VARS[$voten]==null){ $cook_old=2; $cvalue=101; setcookie ("JSK_VOTE#$ques", $cvalue.$date,time()+864000); } else if (substr($cdata,4,8)<$date){ $cvalue=101; setcookie ("JSK_VOTE#$ques", $cvalue.$date,time()+864000); // echo $cdata; $cook_old=2; } else { setcookie ("JSK_VOTE#$ques", (substr($cdata,0,3)+1).$date,time()+864000); $cook_old=1; } $cdata = $HTTP_COOKIE_VARS[$voten]; } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Результаты опроса</title> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <META NAME="Keywords" CONTENT="Саянскхимпласт,ОАО Саянскхимпром,опрос,голосование"> <link rel="stylesheet" href="/Styles/scp_style.css"> </head> <body aLink=red link=black vLink=black bgcolor="#FFFFFF" text="#000000" leftmargin="7" topmargin="1" marginwidth="0" marginheight="0"> <center> <? if (($vote!=11)&&($cook_old==2)){ $result = ociparse($connect,"update ilya.ivcvotes set vote".$vote."=vote".$vote."+1 where quesid='$ques'"); ociexecute($result); ocicommit($connect); OCIFreeStatement($result); } $query1="select quesname,vote1,vote2,vote3,vote4,vote5,vote6,vote7,vote8,vote9,vote10, vname1,vname2,vname3,vname4,vname5,vname6,vname7,vname8,vname9,vname10 from ilya.ivcvotes where quesid=$ques"; $stmt = ociparse($connect,$query1); ociexecute($stmt); while (ocifetch($stmt)) { $Nameopr=ociresult($stmt,"QUESNAME"); $v10 [0]=ociresult($stmt,"VOTE1"); $v10 [1]=ociresult($stmt,"VOTE2"); $v10 [2]=ociresult($stmt,"VOTE3"); $v10 [3]=ociresult($stmt,"VOTE4"); $v10 [4]=ociresult($stmt,"VOTE5"); $v10 [5]=ociresult($stmt,"VOTE6"); $v10 [6]=ociresult($stmt,"VOTE7"); $v10 [7]=ociresult($stmt,"VOTE8"); $v10 [8]=ociresult($stmt,"VOTE9"); $v10 [9]=ociresult($stmt,"VOTE10"); $n10 [0]=ociresult($stmt,"VNAME1"); $n10 [1]=ociresult($stmt,"VNAME2"); $n10 [2]=ociresult($stmt,"VNAME3"); $n10 [3]=ociresult($stmt,"VNAME4"); $n10 [4]=ociresult($stmt,"VNAME5"); $n10 [5]=ociresult($stmt,"VNAME6"); $n10 [6]=ociresult($stmt,"VNAME7"); $n10 [7]=ociresult($stmt,"VNAME8"); $n10 [8]=ociresult($stmt,"VNAME9"); $n10 [9]=ociresult($stmt,"VNAME10"); } OCIFreeStatement($stmt); for ($Pr_v=0;$Pr_v<$nvotes;$Pr_v++){ for ($Pr_s=0;$Pr_s<$nvotes;$Pr_s++){ if (($Pr_s!=$vmax[0])&&($Pr_s!=$vmax[1])&&($Pr_s!=$vmax[2])&&($Pr_s!=$vmax[3])&&($Pr_s!=$vmax[4]) &&($Pr_s!=$vmax[5])&&($Pr_s!=$vmax[6])&&($Pr_s!=$vmax[7])&&($Pr_s!=$vmax[8])&&($Pr_s!=$vmax[9])){ if ($v10[$Pr_s]>=$maxtemp){ $maxtemp=$v10[$Pr_s]; $maxtempv=$Pr_s; } } } $vmax[$Pr_v]=$maxtempv; $maxtemp=0;$maxtempv=0; } ocilogoff($connect); echo '<h3>Результаты опроса "'.$Nameopr.'"</h3>'; print ('<TABLE BORDER=10 cellpadding=10 cellspacing=3 align="center" bordercolorlight="#707070" bordercolordark="#202020">'); print ('<TR><TD><B>Название</B></TD>'); print ('<TD><B>Рейтинг</B></TD></TR>'); $maxtempv=0; for ($Pr_s=0;$Pr_s<$nvotes;$Pr_s++) $maxtempv+=$v10[$Pr_s]; for ($Pr_s=0;$Pr_s<$nvotes;$Pr_s++){ $maxtemp=$vmax[$Pr_s]; print ('<TR><TD>'.$n10[$maxtemp].'</TD><TD>'.$v10[$maxtemp].' ('.round(($v10[$maxtemp]*100/$maxtempv),2).'%)</TD></TR>'); } echo '</table>'; if (($cdata!=null)&&($vote!=11)){ if ($cook_old!=2) echo '<BR><B>Вы не можете голосовать больше 1 раза в день за один и тот же опрос.</B><BR>'; } if ($cook_old==2) echo '<BR><B>Спасибо, что проголосовали.</B><BR>'; print ('<a href="javascript:history.back()">Назад</a>'); echo '</center>'; // for ($i=0;$i<$nvotes;$i++) echo $n10[$i]."=".$v10[$i]."!"; // echo '<br>'; // for ($i=0;$i<$nvotes;$i++) echo $vmax[$i]; echo '</body></html>'; ?> А вот форма, с которой идет голосование: <form action=/scp/phps/vote/scpvote.php method = post name=voteform> <table bgcolor="#DBCB9F" width=204 align="center" border=3 bordercolorlight="#faefc1" bordercolordark="#f4c52f" height="60"> <tr> <td align= "left"> <div align="center"><font size="2"><b>Какая продукция вас наиболее привлекает?</b></font></div> </td> </tr> <tr> <td align = "center"> <div align="left"><font size="2"> <input type="radio" name = "vote" value = "1"> &nbs p; ПВХ-С</font> </div> </td> </tr> <tr> <td align = "center"> <div align="left"><font size="2"> <input type="radio" name = "vote" value = "2"> Белизна</font> </div> </td> </tr> <tr> <td align = "center"> <div align="left"><font size="2"> <input type="radio" name = "vote" value = "3"> Обувной пластикат</font> </div> </td> </tr> <tr> <td align = "center"> <div align="left"><font size="2"> <input type="radio" name = "vote" value = "4"> Кабельный пластикат</font> </div> </td> </tr> <tr> <td align = "center"> <div align="left"><font size="2"> <input type="radio" name = "vote" value = "5"> Сода каустическая</font> </div> </td> </tr> <tr> <td align = "center"> <div align="left"><font size="2"> <input type="radio" name = "vote" value = "11" checked> Посмотреть результаты </font> </div> </td> </tr> <input type="hidden" name = "ques" value = "3"> <input type="hidden" name = "nvotes" value = "5"> <tr> <td colspan="2" align = "center"><font size="1"> <input type="submit" value="Готово" name="submit"> </font></td> </tr> </table> </form> |
|
|
# 8 |
|
Junior Member
Регистрация: 24.04.2003
Сообщения: 130
![]() ![]() |
Помогите, пожалуйста!
Не могу послать Cookies в PHP. В конфиге PHP: output_buffering = On Посылаю кукис таким скриптом: <? if ($id=="") $id=123; $id=$il+1; $end = mktime(0,0,0,12,1,2003); setcookie('il',$id,$end,'/chat','ilusnet',1); ?> Сервер выдаёт такой заголовок: HTTP/1.1 200 OK Date: Mon, 06 Oct 2003 08:57:45 GMT Server: Apache/2.0.40 (Red Hat Linux) Accept-Ranges: bytes X-Powered-By: PHP/4.2.2 Set-Cookie: il=1; expires=Sun, 30-Nov-2003 22:00:00 GMT; path=/chat; domain=ilusnet; secure Content-Length: 86 Connection: close Content-Type: text/html; charset=WINDOWS-1251 Content-Language: ru Но в папке C:\Windows\Cookies ничего нового не появляется. В чём проблема?
__________________
Всё пройдёт, и это тоже...
|
|
|