imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 19.11.2002, 07:24     # 1
lanix
::VIP::
 
Аватар для lanix
 
Регистрация: 09.05.2002
Адрес: Lithuania
Сообщения: 591

lanix Известность не заставит себя ждать
Arrow Что такое Cookies и с чем его едят ?

как мне записать Кукиз (поставить) в файле обработки голосования и при наличии куки- отказать добавить голос...
ето выглядит так ?
setcookie($voted);
if($voted=1) { echo " izvenite vy golosovali " }

так ??
lanix вне форума  
Старый 19.11.2002, 17:02     # 2
v_ilya
Guest
 
Сообщения: n/a

Thumbs up Пример для твоего голосования

Вот как можно сделать:
(хэдеры вначале я ставлю, чтобы не кэшировалось в браузере, можно не ставить, но для отладки хорошо, а то бывает, данные новые, а браузер из своего кэша берет старье.)

<?
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.
 
Старый 19.11.2002, 23:34     # 3
lanix
::VIP::
 
Аватар для lanix
 
Регистрация: 09.05.2002
Адрес: Lithuania
Сообщения: 591

lanix Известность не заставит себя ждать
ошибку выдает :
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
lanix вне форума  
Старый 19.11.2002, 23:44     # 4
lanix
::VIP::
 
Аватар для lanix
 
Регистрация: 09.05.2002
Адрес: Lithuania
Сообщения: 591

lanix Известность не заставит себя ждать
оо !
все работает надо было поставить вторую часть перед тегом <html>.

Спасибо. а теперь как мне сделать многозначный куки ( если у меня 4 голосования ) ... cookie[1] ?
lanix вне форума  
Старый 20.11.2002, 13:13     # 5
v_ilya
Guest
 
Сообщения: n/a

Wink Куки 2

Вообще, я использую в 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. Кука послана.";
}
 
Старый 20.11.2002, 23:23     # 6
lanix
::VIP::
 
Аватар для lanix
 
Регистрация: 09.05.2002
Адрес: Lithuania
Сообщения: 591

lanix Известность не заставит себя ждать
сенкс. и еще один вопрос как мне избавиться от такой проблемы ? :
у меня прописана форма
<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 и срабатывает куки

как мне от етого избавиться ?
lanix вне форума  
Старый 21.11.2002, 14:32     # 7
v_ilya
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">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs p;&nbsp;&nbsp;&nbsp;&nbsp;ПВХ-С</font> </div>
</td>
</tr>
<tr>
<td align = "center">
<div align="left"><font size="2">
<input type="radio" name = "vote" value = "2">
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Белизна</font> </div>
</td>
</tr>

<tr>
<td align = "center">
<div align="left"><font size="2">
<input type="radio" name = "vote" value = "3">
&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;Обувной пластикат</font> </div>
</td>
</tr>

<tr>
<td align = "center">
<div align="left"><font size="2">
<input type="radio" name = "vote" value = "4">
&nbsp;&nbsp;&nbsp;Кабельный пластикат</font> </div>
</td>
</tr>
<tr>
<td align = "center">
<div align="left"><font size="2">
<input type="radio" name = "vote" value = "5">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Сода каустическая</font> </div>
</td>
</tr>
<tr>
<td align = "center">
<div align="left"><font size="2">
<input type="radio" name = "vote" value = "11" checked>
&nbsp;Посмотреть результаты </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>
 
Старый 07.10.2003, 00:20     # 8
il_elec
Junior Member
 
Аватар для il_elec
 
Регистрация: 24.04.2003
Сообщения: 130

il_elec Известность не заставит себя ждатьil_elec Известность не заставит себя ждать
Помогите, пожалуйста!
Не могу послать 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 ничего нового не появляется.
В чём проблема?
__________________
Всё пройдёт, и это тоже...
il_elec вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 00:32.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.