Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: sonda i cookie
Forum PHP.pl > Forum > Przedszkole
pirate86
Hi!!

Mam następujący problem... i mnie już poprostu trafia...

Potrzebuję zrobić system sond. Mam gotowy plik ze skryptem php ( funkcja pokaz_sonde($tryb) ), który w zależności od parametru $tryb, wyświetla albo tabelkę z wyborem opcji ($tryb=1), albo tabelkę z wynikami ($tryb=2). Wszystko jest generalnie zrobione bo sama sonda działa idealnie...

Potrzebuję zrobić jeszcze coś takiego, zeby każdy mógł głosować w takiej sondzie tylko raz, więc myślę że wypadałoby użyć Cookies. I w razie, gdy ktoś już raz zagłosował, to zamiast opcji, pokazują mu się od razu wyniki ($tryb=2);

Zrobiłem więc coś takiego;

W momencie wykonania formularza, który obsługuje całą sondę, wysyła mi się zmienna GET o nazwie "sonda_opt";

wrzuciłem zatem na samą górę dokumentu:

  1. <?php
  2. if($_GET['sonda_opt']!="") setcookie("sonda","1",time()+3600*7);
  3. ?>

---------

natomiast niżej, tam gdzie ma być wypisana tabela z sondą:
  1. <?php
  2.  
  3. if($_COOKIE["sonda"]!=1)
  4. echo pokaz_sonde(1); else
  5. echo pokaz_sonde(2);
  6.  
  7. ?>

-----------
I NIE DZIAŁA!!!!!!!!

mianowicie owszem... jeśli nie ma jeszcze wartości "sonda" w Cookie to wypisze mi sondę z parametrem 1. Jeśli jednak odswieżę strone to już wypisuje mi z 2.
Mimo, że $_GET['sonda_opt'] jest RÓWNE "".

I cuż ja mam z tym zrobić??


--------
Pzdr;

_______
Mysle ze kazdy poradzi sobie z przeczytaniem Twojego tematu, pomimo tego ze nie ma zielonego koloru tekstu i nie jest caly pogrubiony. Podniesie jednak jego czytelnosc uzycie prawidlowego bbcode... zachecam do zarejestrowania się, co pozwoli CI samemu poprawić błędy.

ActivePlayer
dtb
sprobuj to:
  1. <?php
  2.  
  3. # umiesc to na samy poczatu pliku, ponad całym kodem:
  4. if (isset ($_GET['sonda_opt'])) setcookie ('sonda', true, time()+3600*24*7);
  5.  
  6. # to umiesc w miejscu, gdzie ma byc pokazana sonda
  7. echo pokaz_sonde ($_COOKIE['sonda'] ? 2 : 1)
  8.  
  9. ?>


PS. kod php umieszczaj pomiedzy [php] i [/ php] oraz zamykaj wszystkie tagi (chodzi mi o [KOLOR=green]), bo widzisz jak to wyglada
Guest
ok, wyszedłem z tego inaczej... bardziej łopatologicznie :-)

  1. <?php
  2.  
  3. if($_GET['sonda_opt']!="") setcookie("sonda","1",time()+3600*24*7);
  4. else if($_GET['sonda_opt']=="") if($_COOKIE["sonda"]!=1) setcookie("sonda","0",time()+3600*7);
  5.  
  6. ?>


i później
  1. <?php
  2.  
  3. if($_COOKIE["sonda"]==1) $sonda=pokaz_sonde(2);
  4. if($_COOKIE["sonda"]==0) $sonda=pokaz_sonde(1);
  5.  
  6. ?>

------------------
i problem związany z tym, że plik Cookie był tworzony mimo tego, że nie powinien, został zażegnany.
--------------
Pojawił się natomiast inny.

Po kolei wygląda to teraz tak (załóżmy, że usuwamy Cookie):

Wchodzę na stronę po raz pierwszy (rzecz jasna sonde mam dostępną do głosowania), oddaję głos i sonda działa (bo zapisuje wartość do bazy), ale po odświerzeniu strony, które następuje samoczynnie, wciąż widzę sondę z opcjami a nie z wynikami. Dopiero gdy jeszcze raz stronę odświeżę, to wchodzi tak jak powinno.

I co z TYM zrobić??
strife
Cytat(Guest @ 2005-11-13 21:34:56)
ale po odświerzeniu strony, które następuje samoczynnie,

Jeśli dobrze rozumiem, odświerzenie następuje ponieważ został wciśnięty submit. Musisz po tej akcji przekierować użytkownika poprzez header" title="Zobacz w manualu php" target="_manual w inną lokalizację ( tą gdzie jest widoczna sonda, tam gdzie kieruje form ).

Jeśli będziesz miał błąd z header, poczytaj o headers already send na forum, google etc.

Pozdro!
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.