Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP] Jak odpowiednio używać cookie
Forum PHP.pl > Forum > Przedszkole
powazny
Witam.

Mam taki programik:
tekst1.php
  1. <html>
  2.  
  3. <head>
  4. <title> wprowadz tekst </title>
  5. </head>
  6.  
  7. <body>
  8. <form method="post" action="tekst2.php">
  9. wprowadz tekst
  10. <input type="text" name="tekst">
  11. <br>
  12. wprowadz kolor
  13. <input type="text" name="kolor">
  14. <br>
  15. wprowadz rozmiar czcionki
  16. <input type="text" name="rozmiar">
  17. <br>
  18. pogrubiony ?
  19. <input type="checkbox" value="vbold" name="bold">
  20. <br>
  21. pochylony ?
  22. <input type="checkbox" value="vitalic" name="italic">
  23. <br>
  24. <input type="submit" name="Submit" value="wyslij">
  25. </form>
  26.  
  27. </body>
  28.  
  29. </html>


  1. <?
  2. if(isset($_REQUEST['tekst'])){
  3. setcookie('tekst', $_REQUEST['tekst'], time()+3600);
  4. echo "przypisuje ciasteczka do ", $_REQUEST['tekst'], "<br>";
  5. }
  6. if(isset($_REQUEST['kolor']))
  7. setcookie('kolor', $_REQUEST['kolor'], time()+3600);
  8. if(isset($_REQUEST['rozmiar']))
  9. setcookie('rozmiar',$_REQUEST['rozmiar'],time()+3600);
  10. if(isset($_REQUEST['bold']))
  11. setcookie('bold', $_REQUEST['bold'], time()+3600);
  12. else
  13. setcookie('bold', 0, time()-3600);
  14. if(isset($_REQUEST['italic']))
  15. setcookie('italic', $_REQUEST['italic'], time()+3600);
  16. else
  17. setcookie('italic', 0, time()-3600);
  18. if (!isset ($_COOKIE['count'])){
  19. setcookie('count',0, time()+60);
  20. echo "niech stanie sie cookie <br>";
  21. }
  22. ?>
  23. <html>
  24.  
  25. <head>
  26. <title>sformatowany tekst</title>
  27. </head>
  28.  
  29. <body>
  30. <?
  31. echo ++$_COOKIE['count'], "<br>";
  32. $_COOKIE['count'] = $_COOKIE['count']+1;
  33. echo ++$_COOKIE['count'], "<br>";
  34. echo "<font ";
  35. if (isset ($_COOKIE['kolor'])){
  36. echo "color=";
  37. echo $_COOKIE['kolor'];
  38. }
  39. if (isset ($_COOKIE['rozmiar'])){
  40. echo " size=";
  41. echo $_COOKIE['rozmiar'];
  42. }
  43. echo " >";
  44. if(isset($_COOKIE['bold']))echo "<b> ";
  45. if(isset($_COOKIE['italic']))echo "<i> ";
  46. if (isset ($_COOKIE['tekst']))
  47. echo $_COOKIE['tekst'];
  48. if(isset($_COOKIE['italic']))echo "</i> ";
  49. if(isset($_COOKIE['bold']))echo "</b> ";
  50. echo "</font> <br>";
  51.  
  52. echo "<form action=\"tekst1.php\">";
  53. echo "<input type=\"submit\" name=\"Submit\" value=\"wroc\">";
  54. echo "</form>";
  55.  
  56. ?>
  57. </body>
  58.  
  59. </html>


Problem w tym, że nie mogę nigdzie znaleźć opisu jak i w jakiej kolejności działają cookies. Specjalnie wstawiłem w kodzie php opisy (echo), żeby zobaczyć, czy i co zostało wprowadzone do cookie. Jednakgdy wpisuje [wpisany tekst], kod php wyświetla "przypisuje ciasteczka do [wpisany tekst]" a w następnej linijce go nie wyświetla. Dopiero jak dam powrót i wyślę coś innego, np [nowy tekst] to będzie:
"przypisuję ciasteczka do [nowy tekst]", a pod spodem odpowiednio sformatowany "[wpisany tekst]". Czyli ciągle wyświetla mi się dana z poprzedniego wysłania.
Poza tym chciałem napisać licznik, jednak zmienna $_COOKIE['count'] ciągle mi się resetuje (pomimo, że nie uruchamia się setcookie() ).

Czy ktoś może mi pomóc w zrozumieniu czemu tak się dzieje i jak powinno się właściwie korzystać z cookies ?
viking
Na początek poczytaj http://wwwgo.pl/article/1/protokol_http Cookie wysyłane jest w nagłówku. Teraz przemyśl jaki będzie stan licznika w związku z tym i jaka dla żądania pobierana jest wartość?
CuteOne
Ciacha nie działają jak sesja tzn. wynik zmian zobaczysz dopiero po odświeżeniu strony
Powazny
No dobrze, przeczytałem artykuł i już troszkę więcej rozumiem. Zrobiłem tak, że przesyłam dane do drugiej strony z której, po utworzeniu i przypisaniu ciastek, przekierowuje mnie na stronę trzecią na której to wyświetlam (da się prościej ?). Jednak dalej nie rozumiem, czemu 'count' mi się zeruje skoro korzystam z niego tak samo jak z pozostałych, z którymi nic się nie dzieje. Szukałem podpowiedzi na temat nagłówków, buforowania w artykułach oraz ciasteczek w kilku książkach i wciąż nie mogę tego do końca ogarnąć.

edit: czy dobrze rozumiem, że nie mogę zmieniać ciastek metodą $_COOKIE['']++ ? tylko przypisuję ciastko do zmiennej, dodaje, przypisuje zmienna do ciastka, dlatego, że musi zostać wysłane żądanie (?)
bo w taki sposób działa.

Pozostaje tylko pytanie, czy rozwiązanie z 3 stronami jest dobre, czy może jest jakieś bardziej efektywne
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.