Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Uwierzytelnianie HTTP w PHP - jak sie wylogować?
Forum PHP.pl > Forum > Przedszkole
sowiq
Witam,
logowanie przy użyciu metody Uwierzytelnianie HTTP w PHP na pewno wszyscy bardziej zaawansowani PHP'owcy znają.

Krótko o moim problmie.

Co chcę osiągnąć?
1) link 'wyloguj', po którego kliknięciu pojawi się ponownie okno do wpisania danych / ew. link -> zaloguj ponownie, żeby można było zalogować się jako inny user

Dlaczego nie mogę tego osiągnąć?
1) jeśli zrobię sobie skrypcik, który najpierw czyści pola $_SERVER['PHP_AUTH_USER'] i $_SERVER['PHP_AUTH_PW'] a później pokazuje okienko do wpisania danych to niemożliwym jest zalogować się ponownie, bo wywoływany jest cały czas ten skrypt (ta sama ścieżka), czyli od razu po zalogowaniu następuje wylogowanie z prośbą o zalogowanie

2) wyczytałem na jakimś forum, żeby zrobić tego linka do http://logout:logout@strona.pl i działał świetnie! Ale do momentu, w którym zobaczyłem, że kochane IE nie obsługuje tego typu rzeczy :/

Niech mi ktoś mądry powie jak to obejść :/

PS. Nie jest dla mnie rozwiązaniem napisanie systemu logowania na sesjach.
webdice
Spróbuj z:
  1. <?php
  2. unset ($_SERVER['PHP_AUTH_USER']);
  3. unset ($_SERVER['PHP_AUTH_PW']);
  4. ?>


powinno zadziałać.
sowiq
Hehe, bez przesady smile.gif Próbowałem tego na samym początku.

Niestety problem polega na tym, że unset() usunie te dane podczas aktualnego wykonywania skryptu. Przy następnym przeładowaniu zostają one ponownie wysłane w nagłówkach przeglądarki. A jeśli tego unset'a dam przed sprawdzeniem stanu zalogowania, to będzie on czyścił dane za każdym razem - czyli nawet jak wpiszę dobre, to skrypt zobaczy puste pola smile.gif

Zrobiłem trochę inaczej, też nie do końca poprawnie, ale inaczej się chyba nie da:
  1. <?php
  2. // logout.php?logoutUser=login1
  3.    if($_GET['logoutUser'] != $_SERVER['PHP_AUTH_USER']){
  4.        header("Locatio: ./");
  5.        exit;
  6.    }
  7.  
  8.    $_SERVER['PHP_AUTH_USER'] = "";
  9.    $_SERVER['PHP_AUTH_PW'] = "";
  10.  
  11.    pokazOkienkoLogowania();
  12. ?>


Czy jest to jedyna sensowna metoda? Zwróćcie uwagę, że nie da się zalogować ponownie na tego samego usera - trzeba najpierw zmienić w przeglądarce adres z ./logout.php na ./
vraq
Witam
Znalazłem przykrą wiadomość na temat wylogowania się z uwierzytelnienia, dotyczącą Podstawowego Protokołu Uwierzytelnienia.
http://www.flicks.com/technicalSupport/log...hentication.asp
Nie znam się jeszcze dobrze na PHP, a już w ogóle nie na ASP, ale myślę , że sprawa dotyczy tematów powyższych postów. (chodzi o cachowanie haseł i nazw użytkownika przez przeglądarkę, aż do momentu jej zamknięcia).
sowiq
Cytat(vraq @ 2.12.2008, 11:52:54 ) *
(chodzi o cachowanie haseł i nazw użytkownika przez przeglądarkę, aż do momentu jej zamknięcia).
Właśnie stąd wynikał mój problem, ale jak pewnie zauważyłeś powyżej - rozwiązałem go w lepszy lub gorszy sposób. Niepotrzebnie odświeżasz temat sprzed 3 miesięcy.
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.