Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Xajax] $_COOKIE vs $_SESSION
Forum PHP.pl > Forum > XML, AJAX
yadue
Witam serdecznie tym bardziej, że jest to mój pierwszy post na tym forum.

Nie owijając w bawełnę, mam pewien problem ze skryptem, którego piszę. Dokładniej rzecz biorąc piszę skrypt umożliwiający użytkownikom wybór ulubionych piosenek oraz dodanie ich na swoją listę. Sam skrypt ma działać bez bazy danych, a lista danych utworów powinna być dostępna tylko dla danego użytkownika. Początkowo zamierzałem dane te zapisać w $_SESSION, lecz niestety nie rozwiązało to sprawy - po zamknięciu przeglądarki dane ulegają usunięciu, a nie na tym to ma polegać. Przy użyciu $_COOKIE wyglądało początkowo, że wszystko jest w porządku jednak sam zapis danych do $_COOKIE trwa zbyt długo, co utrudnia działanie skryptu. W momencie dodania utworu do listy wywoływane są dwie funkcje, z czego pierwsza funkcja służy do zapisu utworu do COOKIE a druga do odświeżenia całej listy. W przypadku $_SESSION te rozwiązanie odniosło skutek pozytywny i całość przebiegała poprawnie. W przypadku $_COOKIE funkcja pierwsza trwa zbyt długo i zostaje wywołana funkcja wyświetlania zawartości $_COOKIE przed zmianą.

  1. <?php
  2. function edytujListe() {
  3.    if (count($_COOKIE['utwor'])==0) $wynik = "Brak piosenek na liście";
  4.    else {
  5.        $wynik .= "<table width='700px'>";
  6.        foreach ($_COOKIE["utwor"] as $i => $value) {
  7.            $wynik .= "<tr><td>".$value."</td><td><a href='#' onclick=\"xajax_usunUtwor('".$i."'); xajax_edytujListe();\">Usuń</td></tr>";
  8.        }    
  9.        $wynik .= "</table>";
  10.    }
  11.    $objResponse = new xajaxResponse();
  12.    $objResponse->assign("wynik","innerHTML",$wynik);
  13.    return $objResponse;
  14. }
  15.  
  16. function usunUtwor ($arg) {
  17.    $cookie = 'utwor['.$arg.']';
  18.    setcookie($cookie,"",time() - 3600);
  19. }
  20.  
  21. //funkcja dodająca dany utwór z listy
  22.  
  23. function dodajDoPlaylisty($nick, $key, $utwor_nazwa) {
  24.    $utworUrl = 'http://'.$nick.'.localhost/'.$key;
  25.    $cookie = 'utwor['.$utworUrl .']';
  26.    setcookie($cookie, $utwor_nazwa);
  27. }
  28. ?>


Przy wywoływaniu tego:
  1. <?php
  2. <a href='#' onclick="xajax_usunMP3('".$i."'); xajax_edytujListe();\">Usuń</a>
  3. ?>

Powinno najpierw usunąć utwór a następnie ponownie wyświetlić listę. A niestety tak nie jest. Najpierw jest wyświetlana lista a dopiero później zmiana $_COOKIE, przy $_SESSION problem ten nie występował. Proszę o pomoc.

Z góry dziękuję za pomoc.
uirapuru
nie uzywanie bazy to wymog zleceniodawcy, twoj pomysl, czy jakas inna okolicznosc? moze skorzystaj z google base smile.gif
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.