Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Xajax] $_COOKIE vs $_SESSION
yadue
post 3.07.2009, 13:51:19
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 3.07.2009

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


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.

Ten post edytował yadue 3.07.2009, 14:36:35
Go to the top of the page
+Quote Post
uirapuru
post 15.08.2009, 13:51:31
Post #2





Grupa: Zarejestrowani
Postów: 182
Pomógł: 9
Dołączył: 30.04.2005

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


nie uzywanie bazy to wymog zleceniodawcy, twoj pomysl, czy jakas inna okolicznosc? moze skorzystaj z google base smile.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: 19.07.2025 - 09:45