Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Sposób na wylogowanie?
Forum PHP.pl > Forum > Przedszkole
DREEMus
Mam taką funkcję ...
  1. <?php
  2. function wyloguj () {
  3.    unset ($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']);
  4.    header ('Location: index.php');
  5.    }
  6. ?>

Problem w tym, że po wykonaniu co prawda przenosi do "index.php", ale zmienne $_SERVER nadal mają swoją wartość ... więc i wylogowanie nie działa, klikam na link, żeby wejść na stronkę z logowaniem, ale logować się już nie musze sad.gif ... Zna ktoś lepszy sposób na mechanizm wylogowania questionmark.gif

PS. Do autoryzacji korzystam tylko z isset'a ... dane porównuje z bazą danych ...
Skie
Po pierwsze - czemu autoryzację (logowanie) użytkowników masz oparte o $_SERVER?
Zainteresuje się takim czymś co się zwie $_SESSION. Nie jestem nawet pewien czy możesz unset'ować $_SERVER.

Po drugie - wszystko masz opisane w manualu

Cytat
If a globalized variable is unset() inside of a function, only the local variable is destroyed. The variable in the calling environment will retain the same value as before unset() was called.


A co do Twojego sposobu, spróbj tak:

  1. <?php
  2. function wyloguj () {
  3.   unset ($GLOBALS['_SERVER']['PHP_AUTH_USER'], $GLOBALS['_SERVER']['PHP_AUTH_PW']);
  4.   header ('Location: index.php');
  5. }
  6. ?>
dr_bonzo
@DREEMus:
http://pl.php.net/features.http-auth - masz opisane z tym problemy.
Pozatym usuniecie zmiennych nic ci nie da, jesli w nastepnym requescie przegladarka znow sie bedzie logowac tymi samymi danymi.

Chcesz zrobic logowanie - zrob je tradycyjna metoda, na sesjach - przykladow w necie masz 100tki.

@Skie:

Cytat
o drugie - wszystko masz opisane w manualu
Cytat
If a globalized variable is unset() inside of a function, only the local variable is destroyed. The variable in the calling environment will retain the same value as before unset() was called.



Ten przypadek nie odnosi sie do zmiennych SUPERGLOBALNYCH, w manualu masz wszystko opisane, nawet przyklad gdzie musiz uzyc "global" aby zglobalizowac zmienna.
DREEMus
korzystam z tego sposobu, bo jest on tylko do autoryzacji i nic więcej nie będzie robił ...
ale poczytam o sesjach smile.gif

Cytat(Skie @ 21.02.2009, 06:39:17 ) *
  1. <?php
  2. function wyloguj () {
  3.   unset ($GLOBALS['_SERVER']['PHP_AUTH_USER'], $GLOBALS['_SERVER']['PHP_AUTH_PW']);
  4.   header ('Location: index.php');
  5. }
  6. ?>


Nadal nic ... Biorę się za sesje smile.gif
sowiq
Miałem ten sam problem i jako-tako udało mi się go rozwiązać. http://forum.php.pl/index.php?showtopic=103372
DREEMus
dzięki sowiq, przydało się 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.