poll script maken
remy - 09/09/2004 21:03 (laatste wijziging 09/09/2004 21:03)
PHP ver gevorderde
kan iemand mij vertellen hoe je een poll script maakt met cookies?
ik heb het nu zo:
gestemd?
{
mag niet stemmen van cookie
toon resultaten
}
else
{
toon poll
als er ingevuld is
{
verwerk en maak cookie
}
else
{
euhm weenie ????
}
}
nou dit werkt niet bij mij
11 antwoorden
Gesponsorde links
webstab - 09/09/2004 21:06
PHP ver gevorderde
mss het hele script?
remy - 09/09/2004 21:09
PHP ver gevorderde
okee
<html>
<head>
<title>Poll</title>
</head>
<body>
<?php
if(isset($_POST['submit']))
{
if(isset($_COOKIE['gestemd']))
{
//laat resultaten zien
}
else
{
//laat resultaten zien samen met de knop en rondjes
if(isset($_POST['submit']))
{
$result="result.txt";
$pointer=fopen($result,"r+");
$poll=fread($pointer,filesize($result));
$poll=trim($poll);
$poll=explode(",",$poll);
$poll[$_POST['antwoord']]++;
$poll=$poll[0] . "," . $poll[1] . "," . $poll[2];
rewind($pointer);
fputs($pointer,$poll);
fclose($pointer);
Setcookie("gestemd", "ja");
print "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=poll.php'>";
}
}
}
else
{
//laat resultaten zien
}
echo "</form>";
echo "</td><td bordercolor=#ffffff>".$totaal." stemmen</td>";
echo "</tr></td></tr></table></table>";
?>
</body>
</html>
<html>
<head>
<title>Poll</title>
</head>
<body>
<?php
if ( isset ( $_POST [ 'submit' ] ) ) {
if ( isset ( $_COOKIE [ 'gestemd' ] ) ) {
//laat resultaten zien
}
else
{
//laat resultaten zien samen met de knop en rondjes
if ( isset ( $_POST [ 'submit' ] ) ) {
$result = "result.txt" ;
$pointer = fopen ( $result , "r+" ) ; $poll [ $_POST [ 'antwoord' ] ] ++;
$poll = $poll [ 0 ] . "," . $poll [ 1 ] . "," . $poll [ 2 ] ;
print "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=poll.php'>" ; }
}
}
else
{
//laat resultaten zien
}
echo "</td><td bordercolor=#ffffff>" . $totaal . " stemmen</td>" ; echo "</tr></td></tr></table></table>" ; ?>
</body>
</html>
remy - 10/09/2004 21:03
PHP ver gevorderde
ik heb het nu zo, volgen mij zou het moeten werken maar er zit een probleem met die cookies. hij geeft altijd fals terug.
<html>
<head>
<title>Poll</title>
</head>
<body>
<?php
$opties[0] = "<font face=verdana size=2>mooi ";
$opties[1] = "<font face=verdana size=2>gaat ";
$opties[2] = "<font face=verdana size=2>stom ";
$vraag = "<center><font face=verdana size=2>Wat vind je van de poll?</center>";
$result="result.txt";
$pointer=fopen($result,"r");
$poll=fread($pointer,filesize($result));
fclose($pointer);
$poll=explode(",",$poll);
$totaal=$poll[0]+$poll[1]+$poll[2];
$barlengte=400;
$barlengte0=(100/$totaal)*$poll[0];
$barlengte1=(100/$totaal)*$poll[1];
$barlengte2=(100/$totaal)*$poll[2];
$barlengte0=round($barlengte0);
$barlengte1=round($barlengte1);
$barlengte2=round($barlengte2);
$pro[0]=round(100/$totaal*$poll[0]);
$pro[1]=round(100/$totaal*$poll[1]);
$pro[2]=round(100/$totaal*$poll[2]);
if(isset($_COOKIE['gestemd']))
{
echo "<TABLE border=1 bordercolor=#000000 cellspacing=2 cellpadding=2 STYLE=\"border-style: solid; border-color: #ffffff;\" width=250><TR><TD STYLE=\"border-style: solid; border-color: #000000;\" width=500 colspan=2 style=\"filter:progid:DXImagetransform.Microsoft.Gradient(endColorstr='#efefef', startColorstr='#3399cc', gradientType='0');\"><font face=verdana>".$vraag."</font></td></tr>";
echo "<tr><td STYLE=\"border-style: solid; border-color: #000000;\">";
echo "<table><tr><td bordercolor=#000000 width=11%>";
echo $opties[0] . "</td>";
echo "<td bordercolor=#ffffff><table border=0 cellspacing=0 cellpadding=0><tr>";
echo "<td width=$barlengte0 bgcolor=red height=5></td></tr></table></td><td>$pro[0]%</td>";
echo "</tr>";
echo "<tr>";
echo "<td bordercolor=#ffffff width=10%>";
echo $opties[1] . "</td>";
echo "<td bordercolor=#ffffff><table border=0 cellspacing=0 cellpadding=0><tr>";
echo "<td width=$barlengte1 bgcolor=red height=5></td></tr></table></td><td>$pro[1]%</td>";
echo "</tr>";
echo "<tr>";
echo "<td bordercolor=#ffffff width=10%>";
echo $opties[2] . "</td>";
echo "<td bordercolor=#ffffff><table border=0 cellspacing=0 cellpadding=0 ><tr>";
echo "<td width=$barlengte2 bgcolor=red height=5></td></tr></table></td><td>$pro[2]%</td>";
echo "</tr>";
echo "<tr>";
echo "<td bordercolor=#ffffff width=10%>Gestemd</td>";
}
else
{
echo "<form method=post>";
echo "<TABLE border=1 bordercolor=#000000 cellspacing=2 cellpadding=2 STYLE=\"border-style: solid; border-color: #ffffff;\" width=250><TR><TD STYLE=\"border-style: solid; border-color: #000000;\" width=500 colspan=2 style=\"filter:progid:DXImagetransform.Microsoft.Gradient(endColorstr='#efefef', startColorstr='#3399cc', gradientType='0');\"><font face=verdana>".$vraag."</font></td></tr>";
echo "<tr><td STYLE=\"border-style: solid; border-color: #000000;\">";
echo "<table><tr><td bordercolor=#000000 width=11%>";
echo "<input type=radio name=antwoord value=0>".$opties[0]."</td>";
echo "<td bordercolor=#ffffff><table border=0 cellspacing=0 cellpadding=0><tr>";
echo "<td width=$barlengte0 bgcolor=red height=5></td></tr></table></td><td>$pro[0]%</td>";
echo "</tr>";
echo "<tr>";
echo "<td bordercolor=#ffffff width=10%>";
echo "<input type=radio name=antwoord value=1>".$opties[1]."</td>";
echo "<td bordercolor=#ffffff><table border=0 cellspacing=0 cellpadding=0><tr>";
echo "<td width=$barlengte1 bgcolor=red height=5></td></tr></table></td><td>$pro[1]%</td>";
echo "</tr>";
echo "<tr>";
echo "<td bordercolor=#ffffff width=10%>";
echo "<input type=radio name=antwoord value=2>".$opties[2]."</td>";
echo "<td bordercolor=#ffffff><table border=0 cellspacing=0 cellpadding=0><tr>";
echo "<td width=$barlengte2 bgcolor=red height=5></td></tr></table></td><td>$pro[2]%</td>";
echo "</tr>";
echo "<tr>";
echo "<td bordercolor=#ffffff width=10%>";
echo "<input name=submit type=submit value=Stem>";
if(isset($_POST['submit']))
{
$result="result.txt";
$pointer=fopen($result,"r+");
$poll=fread($pointer,filesize($result));
$poll=trim($poll);
$poll=explode(",",$poll);
$poll[$_POST['antwoord']]++;
$poll=$poll[0] . "," . $poll[1] . "," . $poll[2];
rewind($pointer);
fputs($pointer,$poll);
fclose($pointer);
Setcookie("gestemd", "ja");
}
}
echo "</form>";
echo "</td><td bordercolor=#ffffff>".$totaal." stemmen</td>";
echo "</tr></td></tr></table></table>";
?>
</body>
</html>
<html>
<head>
<title>Poll</title>
</head>
<body>
<?php
$opties [ 0 ] = "<font face=verdana size=2>mooi " ;
$opties [ 1 ] = "<font face=verdana size=2>gaat " ;
$opties [ 2 ] = "<font face=verdana size=2>stom " ;
$vraag = "<center><font face=verdana size=2>Wat vind je van de poll?</center>" ;
$result = "result.txt" ;
$pointer = fopen ( $result , "r" ) ;
$totaal = $poll [ 0 ] + $poll [ 1 ] + $poll [ 2 ] ;
$barlengte = 400 ;
$barlengte0 = ( 100 / $totaal ) * $poll [ 0 ] ;
$barlengte1 = ( 100 / $totaal ) * $poll [ 1 ] ;
$barlengte2 = ( 100 / $totaal ) * $poll [ 2 ] ;
$barlengte0 = round ( $barlengte0 ) ; $barlengte1 = round ( $barlengte1 ) ; $barlengte2 = round ( $barlengte2 ) ;
$pro [ 0 ] = round ( 100 / $totaal * $poll [ 0 ] ) ; $pro [ 1 ] = round ( 100 / $totaal * $poll [ 1 ] ) ; $pro [ 2 ] = round ( 100 / $totaal * $poll [ 2 ] ) ;
if ( isset ( $_COOKIE [ 'gestemd' ] ) ) {
echo "<TABLE border=1 bordercolor=#000000 cellspacing=2 cellpadding=2 STYLE=\" border-style: solid; border-color: #ffffff;\" width=250><TR><TD STYLE=\" border-style: solid; border-color: #000000;\" width=500 colspan=2 style=\" filter:progid:DXImagetransform.Microsoft.Gradient(endColorstr='#efefef', startColorstr='#3399cc', gradientType='0');\" ><font face=verdana>" . $vraag . "</font></td></tr>" ; echo "<tr><td STYLE=\" border-style: solid; border-color: #000000;\" >" ; echo "<table><tr><td bordercolor=#000000 width=11%>" ; echo $opties [ 0 ] . "</td>" ; echo "<td bordercolor=#ffffff><table border=0 cellspacing=0 cellpadding=0><tr>" ; echo "<td width=$barlengte0 bgcolor=red height=5></td></tr></table></td><td>$pro[0] %</td>" ; echo "<td bordercolor=#ffffff width=10%>" ; echo $opties [ 1 ] . "</td>" ; echo "<td bordercolor=#ffffff><table border=0 cellspacing=0 cellpadding=0><tr>" ; echo "<td width=$barlengte1 bgcolor=red height=5></td></tr></table></td><td>$pro[1] %</td>" ; echo "<td bordercolor=#ffffff width=10%>" ; echo $opties [ 2 ] . "</td>" ; echo "<td bordercolor=#ffffff><table border=0 cellspacing=0 cellpadding=0 ><tr>" ; echo "<td width=$barlengte2 bgcolor=red height=5></td></tr></table></td><td>$pro[2] %</td>" ; echo "<td bordercolor=#ffffff width=10%>Gestemd</td>" ;
}
else
{
echo "<form method=post>" ; echo "<TABLE border=1 bordercolor=#000000 cellspacing=2 cellpadding=2 STYLE=\" border-style: solid; border-color: #ffffff;\" width=250><TR><TD STYLE=\" border-style: solid; border-color: #000000;\" width=500 colspan=2 style=\" filter:progid:DXImagetransform.Microsoft.Gradient(endColorstr='#efefef', startColorstr='#3399cc', gradientType='0');\" ><font face=verdana>" . $vraag . "</font></td></tr>" ; echo "<tr><td STYLE=\" border-style: solid; border-color: #000000;\" >" ; echo "<table><tr><td bordercolor=#000000 width=11%>" ; echo "<input type=radio name=antwoord value=0>" . $opties [ 0 ] . "</td>" ; echo "<td bordercolor=#ffffff><table border=0 cellspacing=0 cellpadding=0><tr>" ; echo "<td width=$barlengte0 bgcolor=red height=5></td></tr></table></td><td>$pro[0] %</td>" ; echo "<td bordercolor=#ffffff width=10%>" ; echo "<input type=radio name=antwoord value=1>" . $opties [ 1 ] . "</td>" ; echo "<td bordercolor=#ffffff><table border=0 cellspacing=0 cellpadding=0><tr>" ; echo "<td width=$barlengte1 bgcolor=red height=5></td></tr></table></td><td>$pro[1] %</td>" ; echo "<td bordercolor=#ffffff width=10%>" ; echo "<input type=radio name=antwoord value=2>" . $opties [ 2 ] . "</td>" ; echo "<td bordercolor=#ffffff><table border=0 cellspacing=0 cellpadding=0><tr>" ; echo "<td width=$barlengte2 bgcolor=red height=5></td></tr></table></td><td>$pro[2] %</td>" ; echo "<td bordercolor=#ffffff width=10%>" ; echo "<input name=submit type=submit value=Stem>" ;
if ( isset ( $_POST [ 'submit' ] ) ) {
$result = "result.txt" ;
$pointer = fopen ( $result , "r+" ) ; $poll [ $_POST [ 'antwoord' ] ] ++;
$poll = $poll [ 0 ] . "," . $poll [ 1 ] . "," . $poll [ 2 ] ;
}
}
echo "</td><td bordercolor=#ffffff>" . $totaal . " stemmen</td>" ; echo "</tr></td></tr></table></table>" ; ?>
</body>
</html>
Thomas - 10/09/2004 21:08 (laatste wijziging 10/09/2004 21:08)
Moderator
Je moet je cookie een verloop-datum meegeven (de derde parameter van setcookie()), anders is je cookie geldig totdat je je 'sessie' sluit, oftewel het cookie is weg op het moment dat je je browser afsluit.
http://www.php.net/setcookie /
er tee ef em
ikrick - 12/09/2004 10:31
HTML interesse
misschien moet je het met ip check doen, dan kunnen ze maar een keer stemmen, en niet steeds om de 3600 sec.
maarja dat zou ik doen;-)
Insane - 12/09/2004 11:20
Onbekend
weet iemand dan hoe dat moet?:s
remy - 12/09/2004 13:05
PHP ver gevorderde
maar met dat ip is het toch zo dat je elke keer dat je opnieuw verbinding maakt een ander ip adres krijgt.
zo kunnen mensen met een 56K modem toxh vaker stemmen of zie ik dat verkeerd.:s
Thomas - 12/09/2004 13:15
Moderator
Je kan geen cookie setten nadat je pagina (<html><head> etc) al begonnen is, omdat cookies deel uitmaken van de 'headers' van je webpagina.
Je kan dit oplossen door:
- ob_start(); te gebruiken (aan het begin van je pagina zetten)
- alles wat met cookies setten en aanpassen te maken heeft verplaatsen naar voor de aanvang van je webpagina
Ook heeft het zin om je pagina te verversen nadat je een cookie geset hebt door middel van de header-functie (bijvoorbeeld header("Location ":.$_SERVER['PHP_SELF']; ), zodat je zeker weet dat de webpagina "in de gaten heeft" dat er zojuist een cookie is geset...
remy - 12/09/2004 19:49
PHP ver gevorderde
oow dus hij maakt al een cookie direct als iemand op de pagina komt...
kijk, hier heb ik nog eens wat aan.
remy - 12/09/2004 20:33
PHP ver gevorderde
maare hoe werkt dat ob_start eigenlijk, ik heb nu de cookie bovenaan geplaatst, en het werkt allemaal perfect maar als de bezoeker op refresh klikt wordten de resultaten weergegeven.
moet ik dit oplossen met ob_start??
Gesponsorde links
Dit onderwerp is gesloten .