Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Sonda + Cookie - nie do końca działa...
Niedźwiedź
post 17.07.2009, 14:32:04
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 17.07.2009
Skąd: Wrocław//Lewin Kłodzki

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


Witam!
Piszę sobię prostą otwartą stronkę (w senie że nie ma kont użytkowników i mieć nie będzie) ośrodka wypoczynkowego, który prowadzę. Chciałbym mieć na tej stronie ankietę, poprzez którą klienci mogliby ocenić świadczone usługi. No ale nie chciałbym aby mogli klikać raz za razem. Dlatego cookies wydają mi się nienajgorszym wyborem, tym bardziej że nei jest to w żadnym wypadku portal społecznościowy czy coś. Napisałem sobie więc taką ankietę:

  1. <?php
  2.    if(!isset($_COOKIE['marysienka'])){
  3.        echo "<p style=\"margin: 41px 26px 16px 12px; text-align:center; font-size:12px; color:#361f0d; font-weight:bold; font-family:Arial;\">Korzystałeś z naszych usług? Możesz nas ocenić!</p>";
  4.        echo "<form action=\"data/survey.php\" method=\"post\" target=\"\">";
  5.        echo "<center><font style=\"font-family:Arial; color:#361f0d; font-size:12px\">Twoja ocena:</font> <select name=\"rating\" class=\"survey\">";
  6.        for($i=1;$i<7;$i++) echo "<option>",$i,"</option>";
  7.        echo "</select><br><br>";
  8.        echo "<input class=\"survey\" type=\"Submit\" name=\"survey\" value=\"Oceń!\">";
  9.        echo "</center></form>";
  10.    }else{
  11.        echo "<p style=\"margin-top: 41px; margin-right=16px; margin-left: 12px; text-align:center; font-size:12px; color:#361f0d; font-weight:bold; font-family:Arial;\">Już głosowałeś!</p>";
  12.        $file=fopen("nrate.dat","r");
  13.        $nrate=fgets($file);
  14.        fclose($file);
  15.        $file=fopen("srate.dat","r");
  16.        $srate=fgets($file);
  17.        fclose($file);
  18.        echo "<p style=\"margin-bottom: 26px; margin-right=16px; margin-left: 12px; text-align:center; font-size:12px; color:#361f0d; font-weight:bold; font-family:Arial;\">Średnia ocena wynosi ",round($srate/$nrate,2),"<br>";
  19.        echo "Głosowało już ",$nrate," osób.</p>";
  20.    }
  21. ?>


Plik survey.php:
  1. <?php setcookie('marysienka',$_POST['rating'],time()+86400);
  2.    $file=fopen("nrate.dat","r");
  3.    $nrate=fgets($file);
  4.    fclose($file);
  5.    $file=fopen("srate.dat","r");
  6.    $srate=fgets($file);
  7.    fclose($file);
  8.    $nrate=$nrate+1;
  9.    $srate=$srate+$_POST['rating'];
  10.    $file=fopen("nrate.dat","w");
  11.    fwrite($file,$nrate);
  12.    fclose($file);
  13.    $file=fopen("srate.dat","w");
  14.    fwrite($file,$srate);
  15.    fclose($file);
  16. ?>
  17. <html>
  18.    <head>
  19.        <meta http-equiv="refresh" content="0; url=http://localhost/~kamil/marysienka/show.php?name=home">
  20.    </head>
  21. </html>


Naliczanie głosów działa bez problemu, ale instrukcja if(!isset($_COOKIE['marysienka'])) {...}else{...} nigdy nie wchodzi w zbiór else. Co wiecej, gdy dodałem instrukcję echo $_COOKIE['marysienka'] do pliku z ankietą, to po zagłosowaniu instrukcja nie zwróciła, żadnych wartości... Tak jakby cookie wygasało.

Jednak gdy utworzyłem plik temp.php o zawartości <?php echo $_COOKIE['marysienka']; ?>, to po jego wywołoaniu otrzymałem wartość zapisaną w cookie.

Czy może mi ktoś wyjaśnić dlaczego ten skrypt nie działa?

Z góry thx za pomoc.

Pozdrawiam,
Kamil

Ten post edytował Niedźwiedź 17.07.2009, 14:33:57
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Kojak
post 17.07.2009, 14:57:41
Post #2





Grupa: Zarejestrowani
Postów: 70
Pomógł: 5
Dołączył: 11.09.2007
Skąd: Kielce

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


Uruchomiłem ten podany przez Ciebie skrypt i zagłosowałem. I teraz nie mogę głosować (tak więc weszło w sekcje ELSE). W pliku index.php na samym końcu wywołaj funkcję phpinfo(); i po zagłosowaniu wklej jej zawartość.
Go to the top of the page
+Quote Post
Niedźwiedź
post 18.07.2009, 13:52:16
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 17.07.2009
Skąd: Wrocław//Lewin Kłodzki

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


Hmmm teraz jak sprawdziłem plik ze skryptem to faktycznie działa... Problem pojawia się w głółwnym szablonie strony, gdzie skrypt ankiety jest includowany - wtedy w ogole nie widzi cookie...

Niżej link do tego, co zwraca phpinfo(). (plik rtf)

PHP INFO

Pozdrawiam,
Kamil

Podbijam. Ktoś coś wymyśliłquestionmark.gif?
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 11:47