Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Cookies nie działa?
Forum PHP.pl > Forum > Przedszkole
tommy4
Witam, mam taki problem: zrobiłem logowanie i rejestrację. No i standardowo można się rejestrować, tylko, że jak przychodzi czas na logowanie... Może przedstawię to za pomocą listy:

1. Wpisuję login i hasło do formularza.
2. Naciskam przycisk "Loguj", który wywołuje PHP_SELF.
3. Następnie tworzone jest cookie i zaraz po tym sprawdzane jest, czy to cookie istnieje:

  1. <?php
  2. if(isset($_POST['login']))
  3. {
  4.  
  5. $nick = $_POST['nickl'];
  6. $haslo = md5($_POST['haslol']);
  7. $sql = @mysql_query("SELECT nick, haslo FROM uzytkownicy WHERE nick='$nick' AND haslo='$haslo'");
  8. if(@mysql_num_rows($sql) != 0)
  9. {
  10. $zalogowany = 1;
  11. $dane = @mysql_fetch_assoc($sql);
  12. if (isset($_POST['pamiec']))
  13. {
  14. $czas = time() + 3600 * 24 * 365;
  15. }
  16. else
  17. {
  18. $czas = time() + 3600 * 2;
  19. }
  20. header("P3P: CP='NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM'");
  21. setcookie("gtacartel", $dane['nick'].":".$dane['haslo'],$czas);
  22. }
  23. $daneusera = mysql_fetch_assoc($sql);
  24. }
  25. if (isset($_COOKIE['gtacartel']))
  26. {
  27. $wyodrebnij = explode(":", $_COOKIE['gtacartel']);
  28. $czesc1 = $wyodrebnij['0'];
  29. $czesc2 = $wyodrebnij['1'];
  30. $sql = @mysql_query("SELECT * FROM uzytkownicy WHERE nick='$czesc1' AND haslo='$czesc2'");
  31. unset($wyodrebnij,$czesc1,$czesc2);
  32. if (@mysql_num_rows($sql) != 0)
  33. {
  34. $daneusera = mysql_fetch_assoc($sql);
  35. $zalogowany = 1;
  36. }
  37. }
  38. ?>


No i teraz dochodzi do tego, że w IE loguje się normalnie, a w niektórych Operach i Firefoxach trzeba jeszcze raz nacisnąć przycisk "Loguj". Czy coś robię źle?
mike
Cytat(tommy4 @ 2006-01-12 20:11:56)
3. Następnie tworzone jest cookie i zaraz po tym sprawdzane jest, czy to cookie istnieje:

Zajrzyj tutaj: setcookie()
Cytat
Częste pułapki:
    *  Ciasteczka nie będą widziane do następnego przeładowania strony dla której mają być widoczne.
    *  Ciasteczko może być usunięte tylko z tymi parametrami, z jakimi je ustawiono.
tommy4
No tak, ale większość witryn od razu zalogowuje mnie po zatwierdzeniu danych.
Balas
Poczytaj o sesjach smile.gif

Ja robie tak (ciasteczka+sesja):
Wchodzisz na strone, sprawdza czy jest cookies. Jezeli sa to rozpoczyna sie sesja. Nastepnie na stronie sprawdzane jest czy jest sesja. Jezeli jest to wyswietlana jest zawartosc tego smile.gif

Dalej jezeli nie ma cookies a jest sesja to tez powinno isc bez problemu dalej.

Jezeli nie ma cookies i sesji to pokazuje sie logowanie. Po wpisaniu poprawnych danych rozpoczyna sie sesja (ktora jest pozniej sprawdzana) i tworzy sie cookies (bo zaznaczeniu checkboxa smile.gif )

Mam nadzieje ze zrozumiales o co mi ogolnie chodzilo.
tommy4
i naprawdę tylko sesje są tu rozwiązaniem?

EDIT: Bo widzę, że te witryny tworzą następujące cookie:

sesid
autologin_haslo
autologin

czyli chyba jakoś się da...
Balas
Edytowalem post wyzej. smile.gif
mike
Robisz tak:

Kod
#if Dane poprawne.
    Ustaw cookie.
    #if Jest cookie.
        Zaloguj
    #else
        Nie loguj
# else
    error


A możesz tak:

Kod
#if Dane poprawne.
    Ustaw cookie.
    Zaloguj
# else
    error

Po co sprzwadzasz czy cookie istnieje skoro dane sa poprawne i przed chwilą sam je ustawiłeś ?
Balas
Cytat
Po co sprzwadzasz czy cookie istnieje skoro dane sa poprawne i przed chwilą sam jes ustawiłeś ?


Tylko takie rozwiaznie mi przyszlo do glowy winksmiley.jpg A ze działalo to tak juz zostawilem winksmiley.jpg
tommy4
No to co ja mam w końcu zrobić, żeby działało poprawnie?:/
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.