login  Naam:   Wachtwoord: 
Registreer je!
 Forum

poll script maken

Offline remy - 09/09/2004 21:03 (laatste wijziging 09/09/2004 21:03)
Avatar van remyPHP 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
Offline webstab - 09/09/2004 21:06
Avatar van webstab PHP ver gevorderde mss het hele script?
Offline remy - 09/09/2004 21:09
Avatar van remy PHP ver gevorderde okee

  1. <html>
  2. <head>
  3.  
  4. <title>Poll</title>
  5. </head>
  6. <body>
  7.  
  8. <?php
  9.  
  10. if(isset($_POST['submit']))
  11. {
  12. if(isset($_COOKIE['gestemd']))
  13. {
  14. //laat resultaten zien
  15. }
  16. else
  17. {
  18. //laat resultaten zien samen met de knop en rondjes
  19. if(isset($_POST['submit']))
  20. {
  21. $result="result.txt";
  22. $pointer=fopen($result,"r+");
  23. $poll=fread($pointer,filesize($result));
  24. $poll=trim($poll);
  25. $poll=explode(",",$poll);
  26. $poll[$_POST['antwoord']]++;
  27. $poll=$poll[0] . "," . $poll[1] . "," . $poll[2];
  28. rewind($pointer);
  29. fputs($pointer,$poll);
  30. fclose($pointer);
  31. Setcookie("gestemd", "ja");
  32. print "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=poll.php'>";
  33. }
  34. }
  35.  
  36.  
  37. }
  38. else
  39. {
  40. //laat resultaten zien
  41. }
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53. echo "</form>";
  54. echo "</td><td bordercolor=#ffffff>".$totaal." stemmen</td>";
  55. echo "</tr></td></tr></table></table>";
  56. ?>
  57. </body>
  58. </html>
Offline remy - 10/09/2004 21:03
Avatar van remy 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.

  1. <html>
  2. <head>
  3.  
  4. <title>Poll</title>
  5. </head>
  6. <body>
  7.  
  8. <?php
  9. $opties[0] = "<font face=verdana size=2>mooi ";
  10. $opties[1] = "<font face=verdana size=2>gaat ";
  11. $opties[2] = "<font face=verdana size=2>stom ";
  12. $vraag = "<center><font face=verdana size=2>Wat vind je van de poll?</center>";
  13.  
  14. $result="result.txt";
  15. $pointer=fopen($result,"r");
  16. $poll=fread($pointer,filesize($result));
  17. fclose($pointer);
  18. $poll=explode(",",$poll);
  19.  
  20. $totaal=$poll[0]+$poll[1]+$poll[2];
  21.  
  22. $barlengte=400;
  23. $barlengte0=(100/$totaal)*$poll[0];
  24. $barlengte1=(100/$totaal)*$poll[1];
  25. $barlengte2=(100/$totaal)*$poll[2];
  26. $barlengte0=round($barlengte0);
  27. $barlengte1=round($barlengte1);
  28. $barlengte2=round($barlengte2);
  29.  
  30. $pro[0]=round(100/$totaal*$poll[0]);
  31. $pro[1]=round(100/$totaal*$poll[1]);
  32. $pro[2]=round(100/$totaal*$poll[2]);
  33.  
  34.  
  35. if(isset($_COOKIE['gestemd']))
  36. {
  37.  
  38. 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>";
  39. echo "<tr><td STYLE=\"border-style: solid; border-color: #000000;\">";
  40. echo "<table><tr><td bordercolor=#000000 width=11%>";
  41. echo $opties[0] . "</td>";
  42. echo "<td bordercolor=#ffffff><table border=0 cellspacing=0 cellpadding=0><tr>";
  43. echo "<td width=$barlengte0 bgcolor=red height=5></td></tr></table></td><td>$pro[0]%</td>";
  44. echo "</tr>";
  45. echo "<tr>";
  46. echo "<td bordercolor=#ffffff width=10%>";
  47. echo $opties[1] . "</td>";
  48. echo "<td bordercolor=#ffffff><table border=0 cellspacing=0 cellpadding=0><tr>";
  49. echo "<td width=$barlengte1 bgcolor=red height=5></td></tr></table></td><td>$pro[1]%</td>";
  50. echo "</tr>";
  51. echo "<tr>";
  52. echo "<td bordercolor=#ffffff width=10%>";
  53. echo $opties[2] . "</td>";
  54. echo "<td bordercolor=#ffffff><table border=0 cellspacing=0 cellpadding=0 ><tr>";
  55. echo "<td width=$barlengte2 bgcolor=red height=5></td></tr></table></td><td>$pro[2]%</td>";
  56. echo "</tr>";
  57. echo "<tr>";
  58. echo "<td bordercolor=#ffffff width=10%>Gestemd</td>";
  59.  
  60.  
  61.  
  62.  
  63. }
  64. else
  65. {
  66. echo "<form method=post>";
  67. 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>";
  68. echo "<tr><td STYLE=\"border-style: solid; border-color: #000000;\">";
  69. echo "<table><tr><td bordercolor=#000000 width=11%>";
  70. echo "<input type=radio name=antwoord value=0>".$opties[0]."</td>";
  71. echo "<td bordercolor=#ffffff><table border=0 cellspacing=0 cellpadding=0><tr>";
  72. echo "<td width=$barlengte0 bgcolor=red height=5></td></tr></table></td><td>$pro[0]%</td>";
  73. echo "</tr>";
  74. echo "<tr>";
  75. echo "<td bordercolor=#ffffff width=10%>";
  76. echo "<input type=radio name=antwoord value=1>".$opties[1]."</td>";
  77. echo "<td bordercolor=#ffffff><table border=0 cellspacing=0 cellpadding=0><tr>";
  78. echo "<td width=$barlengte1 bgcolor=red height=5></td></tr></table></td><td>$pro[1]%</td>";
  79. echo "</tr>";
  80. echo "<tr>";
  81. echo "<td bordercolor=#ffffff width=10%>";
  82. echo "<input type=radio name=antwoord value=2>".$opties[2]."</td>";
  83. echo "<td bordercolor=#ffffff><table border=0 cellspacing=0 cellpadding=0><tr>";
  84. echo "<td width=$barlengte2 bgcolor=red height=5></td></tr></table></td><td>$pro[2]%</td>";
  85. echo "</tr>";
  86. echo "<tr>";
  87. echo "<td bordercolor=#ffffff width=10%>";
  88. echo "<input name=submit type=submit value=Stem>";
  89.  
  90. if(isset($_POST['submit']))
  91. {
  92. $result="result.txt";
  93. $pointer=fopen($result,"r+");
  94. $poll=fread($pointer,filesize($result));
  95. $poll=trim($poll);
  96. $poll=explode(",",$poll);
  97. $poll[$_POST['antwoord']]++;
  98. $poll=$poll[0] . "," . $poll[1] . "," . $poll[2];
  99. rewind($pointer);
  100. fputs($pointer,$poll);
  101. fclose($pointer);
  102. Setcookie("gestemd", "ja");
  103.  
  104. }
  105. }
  106.  
  107. echo "</form>";
  108. echo "</td><td bordercolor=#ffffff>".$totaal." stemmen</td>";
  109. echo "</tr></td></tr></table></table>";
  110. ?>
  111. </body>
  112. </html>
Offline Thomas - 10/09/2004 21:08 (laatste wijziging 10/09/2004 21:08)
Avatar van Thomas 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
Offline remy - 10/09/2004 21:13 (laatste wijziging 10/09/2004 21:13)
Avatar van remy PHP ver gevorderde dit heb ik erbij gezet: time() + 3600 maar het werkt nog niet, op http://www.members.lycos.nl/waisjawel/poll.php kun je het zien.
Offline ikrick - 12/09/2004 10:31
Avatar van ikrick 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;-)
Offline Insane - 12/09/2004 11:20
Avatar van Insane Onbekend weet iemand dan hoe dat moet?:s
Offline remy - 12/09/2004 13:05
Avatar van remy 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
Offline Thomas - 12/09/2004 13:15
Avatar van Thomas 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...
Offline remy - 12/09/2004 19:49
Avatar van remy 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.
Offline remy - 12/09/2004 20:33
Avatar van remy 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.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.197s