Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][mysql] Ankieta i cookies, problem...
in5ane
post
Post #1





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Witam, mam problem, otóż wplotłem w swój skrypt inny skrypt.
Nie wiem czy jest wszystko dobrze.
Prosiłbym o sprawdzenie i poprawienie jak można, bądź powiedzenie co jest źle, z góry bardzo dziękuję.

Oto skrypt:
ankieta.php
  1. <?php
  2.  
  3. include("config.php");
  4. mysql_query('SET CHARSET LATIN2');
  5.  
  6. $query = mysql_query ("SELECT * FROM ankieta_pytanie;");
  7. while ($row = mysql_fetch_array ($query)) {
  8. echo '<tr><td background="data/r2.gif"><table width="85%" border="0" align="center" cellpadding="2" cellspacing="2"><tr><td align="center" class="tekst3"><strong>'.$row[1].'</strong></td></tr>';
  9. }
  10.  
  11.  
  12. $query = mysql_query ("SELECT * FROM ankieta ORDER by id;");
  13. echo '<form action="zaglosuj.php" method="get" target="okienko">';
  14. while ($row = mysql_fetch_array ($query)) {
  15. echo '<tr><td><table width="85%" border="0" align="center" cellpadding="2" cellspacing="2"><tr><td width="21%" align="center"><input type="radio" name="odp" value="'.$row[1].'"></td><td width="79%" class="tekst4">'.$row[1].'</td></tr></table></td></tr>';
  16. }
  17.  
  18. echo "<tr><td align="center"><button type="submit" onclick="okienko()">OK</button></td></table></td></tr></form>";
  19.  
  20. ?>


zaglosuj.php
  1. <html>
  2. <head>
  3. <?php 
  4. include("config.php");
  5. $query = mysql_query ("SELECT * FROM config;");
  6. $row = mysql_fetch_array ($query);
  7. echo '<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
  8. <meta http-equiv="Content-Language" content="pl">
  9. <meta name="keywords" content="'.$row[2].'">
  10. <meta name="description" content="'.$row[3].'">
  11. <meta name="reply-to" content="'.$row[4].'">
  12.  <title>'.$row[1].'</title>
  13.  <link rel="stylesheet" href="data/style.css" type="text/css">';
  14. ?>
  15. </head>
  16.  
  17. <body background="data/tlo.gif">
  18.  
  19.  
  20. <?php
  21.  
  22. include("config.php");
  23. mysql_query('SET CHARSET LATIN2');
  24.  
  25. $key="ankieta".$_GET['odp'];
  26.  
  27. if(isset($_COOKIE[$key]))
  28. {
  29. $komunikat = "<strong><span class="tekst2">Nie możesz głosować 2 razy w tej samą ankietę !!<br /><br />(w przeciągu 24 godzin)</span></strong>";
  30. }
  31. else
  32. {
  33.  
  34. if ($odp) {
  35. $odp = $_GET['odp'];
  36. $query = "UPDATE ankieta SET glosy=glosy+1 WHERE name='$odp';";
  37. $wynik = mysql_query ($query);
  38. echo '<table align="center" valign="middle"><tr><td><center><br><br><br><br><br><br><br><br><br><br><strong><span class="tekst2">Głos oddano poprawnie!</strong></span></center></td></tr></table>';
  39. }
  40.  
  41.  
  42.  
  43. $name = "ankieta".$_GET['odp'];
  44. $wartosc = "glosowano";
  45. $czas = time()+86400;
  46. $domena = "http://195.136.66.242/pilka/index.php";
  47.  
  48. setcookie($name, $wartosc, $czas, "/", $domena, 0);
  49. }
  50.  
  51. echo "$komunikat";
  52.  
  53. ?>
  54.  
  55. </body>
  56. </html>


Oto struktura bazy danych:
  1. --
  2. -- Struktura tabeli dla `ankieta`
  3. --
  4.  
  5. CREATE TABLE `ankieta` (
  6. `id` int(11) NOT NULL AUTO_INCREMENT,
  7. `name` text NOT NULL,
  8. `question_id` int(11) NOT NULL,
  9. `glosy` int(11) NOT NULL,
  10. PRIMARY KEY (`id`)
  11. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;


  1. --
  2. -- Struktura tabeli dla `ankieta_pytanie`
  3. --
  4.  
  5. CREATE TABLE `ankieta_pytanie` (
  6. `id` int(11) NOT NULL AUTO_INCREMENT,
  7. `question` text NOT NULL,
  8. PRIMARY KEY (`id`)
  9. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;


Z góry dziękuje za poprawienie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)


EDIT:
Taki error mi wywala:
Kod
Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\pilka\zaglosuj.php:3) in C:\AppServ\www\pilka\zaglosuj.php on line 48


Ten post edytował in5ane 22.03.2007, 17:26:49
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
kossa
post
Post #2





Grupa: Zarejestrowani
Postów: 1 165
Pomógł: 9
Dołączył: 9.04.2002
Skąd: Toruń

Ostrzeżenie: (0%)
-----


cookies musisz przekazywać na początku strony, nim cokoliwek zostanie przesłane do przeglądarki, stąd ten błąd

Łukasz
Go to the top of the page
+Quote Post
in5ane
post
Post #3





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


no i umiescilem to w tym pierwszym pliku prezd przeslaniem i lipa :/ nadal jest ten blad
Go to the top of the page
+Quote Post
kossa
post
Post #4





Grupa: Zarejestrowani
Postów: 1 165
Pomógł: 9
Dołączył: 9.04.2002
Skąd: Toruń

Ostrzeżenie: (0%)
-----


Cytat
$name = "ankieta".$_GET['odp'];
$wartosc = "glosowano";
$czas = time()+86400;
$domena = "http://195.136.66.242/pilka/index.php";

setcookie($name, $wartosc, $czas, "/", $domena, 0);


to Twój kod i on odpowiada za wysłanie cookie - to musi być na początku

Łukasz
Go to the top of the page
+Quote Post
in5ane
post
Post #5





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


no i wzialem to na poczatek i nadal jest
Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\pilka\zaglosuj.php:3) in C:\AppServ\www\pilka\zaglosuj.php on line 22
Go to the top of the page
+Quote Post
PiratNowegoPokol...
post
Post #6





Grupa: Zarejestrowani
Postów: 132
Pomógł: 0
Dołączył: 12.10.2006

Ostrzeżenie: (0%)
-----


Cytat
<html>
<head>
<?php
include("config.php");
$query = mysql_query ("SELECT * FROM config;");

wysłałeś dane już z <html><head> ... Jeszcze przed tym to musisz dać
Go to the top of the page
+Quote Post
in5ane
post
Post #7





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


aha. no i nie ma juz bledy ale jak teraz zrobic zeby to blokowalo?

teraz ten skrypt wyglada tak:
  1. <?php ob_start(); 
  2. setcookie('ankieta', '$odp', time()+86400, '/', '195.136.66.242/pilka/', '0');
  3. ?>
  4.  
  5. <html>
  6. <head>
  7. <?php 
  8. include("config.php");
  9. $query = mysql_query ("SELECT * FROM config;");
  10. $row = mysql_fetch_array ($query);
  11. echo '<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
  12. <meta http-equiv="Content-Language" content="pl">
  13. <meta name="keywords" content="'.$row[2].'">
  14. <meta name="description" content="'.$row[3].'">
  15. <meta name="reply-to" content="'.$row[4].'">
  16.  <title>'.$row[1].'</title>
  17.  <link rel="stylesheet" href="data/style.css" type="text/css">';
  18. ?>
  19. </head>
  20.  
  21. <body background="data/tlo.gif">
  22.  
  23.  
  24. <?php
  25.  
  26. include("config.php");
  27. mysql_query('SET CHARSET LATIN2');
  28.  
  29. if(isset($_COOKIE[ankieta]))
  30. {
  31. echo '<strong><span class="tekst2">Nie możesz głosować 2 razy w tej samą ankietę !!<br><br>(w przeciągu 24 godzin)</span></strong>';
  32. } else {
  33. $odp = $_GET['odp'];
  34. $query = "UPDATE ankieta SET glosy=glosy+1 WHERE name='$odp';";
  35. $wynik = mysql_query ($query);
  36. echo '<table align="center" valign="middle"><tr><td><center><br><br><br><br><br><br><br><br><br><br><strong><span class="tekst2">Głos oddano poprawnie!</strong></span></center></td></tr></table>';
  37. }
  38.  
  39.  
  40. ?>
  41.  
  42. </body>
  43. </html>
  44. <?php ob_end_flush(); ?>
Go to the top of the page
+Quote Post
PiratNowegoPokol...
post
Post #8





Grupa: Zarejestrowani
Postów: 132
Pomógł: 0
Dołączył: 12.10.2006

Ostrzeżenie: (0%)
-----


setcookie() nie dawaj na początku tylko po zapisaniu głosu ... no i sprawdzaj wogóle czy query został poprawnie wykonany ( nie wykluczaj możliwości że takiego głosu nie ma w formularzu ...
Cytat
aha. no i nie ma juz bledy ale jak teraz zrobic zeby to blokowalo?

przecież ci to już blokuje możliwość głosowania
Go to the top of the page
+Quote Post
in5ane
post
Post #9





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


no i dalem to po dodaniu glosu, w tym else ale i tak nadal moge glosowac ile chce.
Go to the top of the page
+Quote Post
Kicok
post
Post #10





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

Ostrzeżenie: (0%)
-----


Bo źle to ciastko wysyłasz:
  1. <?php
  2. setcookie('ankieta', $odp, time()+86400, '/pilka/', '195.136.66.242');
  3. ?>

W ogóle z dwóch ostatnich parametrów możesz zrezygnować.


setcookie" title="Zobacz w manualu PHP" target="_manual
Go to the top of the page
+Quote Post
in5ane
post
Post #11





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


jeeeest (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

teraz dziala, dziekuje (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 15:56