Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z wylogowaniem uzytkownika
Forum PHP.pl > Forum > Przedszkole
phpion
Hej!
Mam problem z wylogowaniem uzytkownika. Do zalogowania i wylogowania uzywam skrypciku:
  1. <?php
  2. if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) || $_SERVER['PHP_AUTH_USER'] != ADMIN_LOGIN || $_SERVER['PHP_AUTH_PW'] != ADMIN_PASS) {
  3. header('WWW-Authenticate: Basic realm="Logowanie"');
  4. header('HTTP/1.0 401 Unauthorized');
  5. echo 'Access denied';
  6. }
  7.  
  8. if (isset($_GET['mode']) && $_GET['mode'] == 'logout') {
  9. unset($_SERVER['PHP_AUTH_USER']);
  10. unset($_SERVER['PHP_AUTH_PW']);
  11. echo 'Logout successful';
  12. }
  13. ?>

No i zachowuje sie to tak: przy wejsciu na strone uzytkownik proszony jest o zalogowanie sie. Gdy da Cancel otrzymuje Access denied. No i spoko. Gdy poda zle haslo otrzyma ponownie okno logowania. Tez spoko. Gdy zaloguje sie poprawnie moze sobie chodzic po stronce. Problem nastepuje przy wylogowaniu. Otoz otrzymuje komunikat Logou successful czyli niby wszystko przebieglo ponownie. Jednak odswiezenie skryptu nie powoduje ponownego pojawienia sie okna logowania. Dopiero po restarcie przegladarki uzytkownik jest proszony o ponowne podanie loginu i hasla.
Sprawdzalem czy unset() wogole sie wykonuje i tak! Po zalogowaniu w tablicy $_SERVER sa elementy o indexach PHP_AUTH_USER oraz PHP_AUTH_PW, natomiast po wylogowaniu elementy te znikaja.
Jak rozwiazac ten problem?
PS: nie chce uzywac do logowania formularza oraz cookies/sesji - chcialbym pozostac przy tym sposobie.

// EDIT:
Zmienne te kasowane sa ale tylko na stronie gdzie nastepuje logout. Gdy pozniej zmienie w adresie admin.php5?mode=logout na np. samo admin.php5 to te zmienne znowu sie pojawiaja :|
Zimon
a nie lepiej jest zastosować sesje??
phpion
No latwiej ale tak jak pisalem nie chce rezygnowac z tego okienka. Przy sesjach trzebaby pisac formularz logowania itd a chcialbym tego wlasnie uniknac. Dlatego wolalbym pozostac przy tym okienku.

// EDIT
Problem zostal rozwiazany.
  1. <?php
  2. header("Cache-Control: no-cache, must-revalidate");
  3. header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  4.  
  5. if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) || $_SERVER['PHP_AUTH_USER'] != ADMIN_LOGIN || $_SERVER['PHP_AUTH_PW'] != ADMIN_PASS) {
  6. header('WWW-Authenticate: Basic realm="Logowanie"');
  7. header('HTTP/1.0 401 Unauthorized');
  8. echo 'Access denied';
  9. }
  10.  
  11. if (isset($_GET['mode']) && $_GET['mode'] == 'logout') {
  12. header( 'WWW-Authenticate: Basic realm="Logowanie"');
  13. echo 'Logout successful';
  14. }
  15. ?>
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.