Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][HTML][PHP]Ankieta
Forum PHP.pl > Forum > Przedszkole
Raven1122
Witam to znowu ja (jakby nie inaczej ^^) Zastanawiam się gdzie umieścić COOKIE, aby dobrze działało i mam z tym mały problem, ponieważ gdzie nie gdzie bym umieścił to zawsze się dodaje za wcześnie. Proszę o pomoc smile.gif


pooldj.php
  1. <?php setcookie('glosowal', 'oddalglos', time()+60*60*24*30); ?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html>
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  6. <meta http-equiv="Content-Language" content="pl" />
  7. <meta name="Robots" content="ALL" />
  8. <link rel="stylesheet" href="/css/style.css" type="text/css" />
  9. <link rel="stylesheet" type="text/css" href="/css/menu.css" />
  10. <script src="js/stuHover.js" type="text/javascript"></script>
  11. <title>Bassplay - Najlepsza Muzyka</title>
  12. </head>
  13.  
  14. <body>
  15. <div id="container">
  16.  
  17. <div id="menu"><?php include("../includes/menu.php"); ?></div>
  18. <div id="contenttop"></div>
  19. <div id="content">
  20.  
  21. <center>
  22. <?php
  23.  
  24. if ($_COOKIE['glosowal'] !== 'oddalglos'){
  25.  
  26.  
  27.  
  28. if (isset($_GET['pool']))
  29. {
  30. $link = mysql_connect("localhost", "bassplay_forum", "ceowwyso12") or die(mysql_error());
  31. mysql_select_db('bassplay_forum') or die(mysql_error());
  32.  
  33. $dj = mysql_real_escape_string($_GET['pool'], $link);
  34. $query = sprintf('UPDATE djpool SET glosy = glosy + 1 WHERE dj = "%s"', $dj);
  35. mysql_query($query, $link) or die(mysql_error());
  36. echo ("Twój głos został poprawnie oddany na ");
  37. echo $dj;
  38. }
  39. else
  40. {
  41. echo ("Proszę zaznaczyć 1 z DJ'ów");
  42. }
  43. }
  44. else {
  45. echo ("Już oddałeś/aś swój głos");
  46. }
  47.  
  48. ?>
  49. </center>
  50. </div>
  51. <div id="contentbottom"><div class="floatend"></div></div>
  52.  
  53. <div id="logo"></div>
  54.  
  55. </div>
  56.  
  57.  
  58.  
  59.  
  60.  
  61. </body>
  62. </html>


viewpool.php?id=1
  1. Głosowanie na najlepszego DJ'a
  2. <br><br>
  3. <form action="/php/pooldj.php" method="get">
  4. <input type="radio" value="DJ Cherry" name="pool">DJ Cherry<br>
  5. <input type="radio" value="DJ Pastyl" name="pool">DJ Pastyl<br>
  6. <input type="radio" value="DJ Mario" name="pool">DJ Mario<br>
  7. <input type="radio" value="Hard Player" name="pool">Hard Player<br>
  8. <input type="radio" value="Perzyk" name="pool">Perzyk<br>
  9. <input type="radio" value="DJ Tasior" name="pool">DJ Tasior<br>
  10. <input type="submit" value="Wyślij">
  11. </form>


viewspecial.php?id=1
  1. <?php
  2.  
  3. $link = mysql_connect("localhost", "bassplay_forum", "ceowwyso12") or die(mysql_error());
  4. mysql_select_db('bassplay_forum') or die(mysql_error());
  5.  
  6. $djpoolmysql = "SELECT*FROM djpool";
  7. $result = mysql_query($djpoolmysql)
  8. while ($row = mysql_fetch_array($result)) {
  9.  
  10.  
  11.  
  12. ?>
  13.  
  14.  
  15. <table border="1">
  16. <tr>
  17. <td width="200"><?php echo $row['dj']; ?><td width="20"><?php echo $row['glosy']; ?></td>
  18. </tr>
  19. </table>
  20. <?php }
  21.  
  22. ?>
  23.  
  24. <?php
  25. if ($_SERVER['REMOTE_ADDR'] == '89.228.133.112'){
  26. echo ("<br> restart");
  27. }
  28. ?>


peter13135
Najpierw rób wszelkie obliczenia w php a dopiero potem wyświetlaj stronę. wtedy nie bedziesz miał problemów z ustawianiem cookiesów w odpowiednim dl ciebie miejscu.
Hpsi
ciastka w celu zabezpieczenia przed kilkukrotnym glosowaniem: po zliczeniu głosu
przed wyświetleniem ankiety sprawdzaj czy ciastka są w bazie jesli tak: wyswietlaj wyniki, jesli nie wyswietlaj ankiete i tyle smile.gif
mortus
Cytat(Hpsi @ 11.08.2011, 12:50:13 ) *
przed wyświetleniem ankiety sprawdzaj czy ciastka są w bazie

Nie wiem, czy coś przegapiłem, ale ciastka chyba zapisuje się po stronie użytkownika, a nie serwera. No chyba, że źle sformułowałeś myśl.

W linii 24 powinieneś raczej użyć nieco innego warunku, mianowicie:
  1. if(!isset($_COOKIE['glosowal'])) {

Natomiast samo ciastko ustawiasz po wykonaniu zapytania aktualizującego dane w bazie, czyli za linią 35.
Raven1122
Hmmm, Headers already sent? haha.gif
nospor
I czego się cieszysz? Nie ma z czego. Problem z headers already sent poruszany tak czesto, ze teraz uzyj wyszukiwarki i go popraw. Do tego czasu zamykam profilaktycznie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.