Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: HTTP Authentication
Forum PHP.pl > Forum > PHP
Spizak
Mam taki problem... smile.gif chcialem zrobic logowanie przez autoryzacje http, wszystko jest ok do czasu
kiedy chce sie wylogowac - cookie z sesja jest normalnie kasowane, jednak po wejscu
na strone index.php wartosci PHP_AUTH_USER i PHP_AUTH_PW sa zapamietywane i jedynie restart przegladarki pomaga (na poczatku myslalem, ze mi sie FF krzaczy).

Przeczytalem, ze mozna usunac wartosci PHP_AUTH_USER i PW poprzez naglowek header('HTTP/1.0 401 Unauthorized'); jednak to nic nie zmienia.
(tzn. nie tak pewne go uzylem jak mialem) efekt jest taki, ze kiedy robie echo w/w zminnych one wciaz posiadaja wartosci podawane przy logowaniu.

Schemat jest taki:
index.php - jesli haslo ok -> main.php - jesli klikniete Wyloguj -> wyloguj.php i tutaj po powrocie to index.php jestem automatycznie zalogowany.

worriedsmiley.gif

index.php

  1. <?php // Autoryzacja
  2.  
  3. if ( (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) )
  4. { // Rozpoczecie warunku sprawdzania loginu i pass w-1
  5. // Dane dostepowa do bazy danych
  6.  
  7. define ('DB_USER',' - cenzura- :) ');
  8. define ('DB_PASSWORD',' cenzura- :)');
  9. define ('DB_HOST',' cenzura- :) ');
  10. define ('DB_NAME',' cenzura- :) ');
  11.  
  12. $dbc = @mysql_connect (DB_HOST,DB_USER,DB_PASSWORD) OR die ('Nie bylo mozliwe polaczenie sie baza MySQL: ' .mysql_error());
  13. mysql_select_db (DB_NAME) OR die ('Nie bylo mozliwe wybranie bazy danych: ' .mysql_error());
  14.  
  15. // Wysylanie zapytania do bazy danych
  16.  
  17. $zapytanie = &#092;"SELECT first_name FROM users WHERE
  18. username='{$_SERVER['PHP_AUTH_USER']}' and
  19. password=PASSWORD('{$_SERVER['PHP_AUTH_PW']}')&#092;";
  20. $wynik = mysql_query ($zapytanie);
  21. $row = @mysql_fetch_row ($wynik);
  22.  
  23. if ($row) { // Jezeli wszystko ok to rekord zostanie zwrocony
  24.  
  25. session_name('IDSesji');
  26. $_SESSION['first_name']=$row[0];
  27. header(&#092;"Location: main.php\");
  28. exit();
  29. }
  30. else
  31. {
  32. header ('WWW-Authenticate: Basic realm=\"Moja strona internetowa\"');
  33. header('HTTP/1.0 401 Unauthorized');
  34. echo '<p>Proszę podać poprawną nazwę konta i hasło <br />
  35. Aby ponownie sprobowac, kliknij <a href=\"index.php\">TUTAJ</a> !</p>';
  36. }
  37.  
  38. } // zakonczenie warunku sprawdzania loginu i pass w-1
  39.  
  40.  
  41. else
  42. {
  43. // Gdy nie zostala przeprowadzona autoryzacja, zostanie wyswietlone stosowne okno.
  44. header ('WWW-Authenticate: Basic realm=\"Moja strona internetowa\"');
  45. header('HTTP/1.0 401 Unauthorized');
  46. echo '<p>Proszę podać poprawną nazwę konta i/lub hasło <br />
  47. Aby ponownie sprobowac, kliknij <a href=\"index.php\">TUTAJ</a> !</p>';
  48.  
  49. }
  50. ?>


plik main.php

  1. <?
  2. session_name('IDSesji');
  3. ?>
  4. <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Final//EN\">
  5. <HTML>
  6. <HEAD>
  7.  <TITLE>Uzywanie autoryzacji HTTP</TITLE>
  8.  </HEAD>
  9.  
  10. <?
  11. // Wyswietl ten komunikat w zaleznosci od tego czy autoryzacja powiodla sie czy ni
  12.  
  13.  
  14. if (isset($_SESSION['first_name'])){
  15. echo '<p>Autoryzacja została przeprowadzona prawidłowo!</p>
  16. Jesteś zalogowany jako <b>'.$_SESSION['first_name'].'</b><br /><br />
  17. Kliknij <a href=\"wyloguj.php\"><b>Wyloguj</b></a> aby sie wylogować.';
  18. }
  19. else
  20. {
  21. echo '<p>Proszę podać poprawną nazwę konta i/lub hasło <br />
  22. Aby ponownie sprobowac, kliknij <a href=\"index.php\">TUTAJ</a> !</p>';
  23. }
  24.  
  25. ?>
  26.  
  27. </body>
  28. </html>


plik: wyloguj.php

  1. <?
  2. header('HTTP/1.0 401 Unauthorized');
  3. session_name('IDSesji');
  4. $_SESSION = array();
  5. setcookie (session_name(),'',time()-300,'/','',0);
  6. echo 'Zostałes wylogowany! <br />Kliknij <a href=\"index.php\">Tutaj</a> żeby zalogować sie ponownie.'
  7. ?>
NuLL
Wiem, ze jest z tym problem ale nie wiem jakto rozwiązać.

Jak masz czas to poczytaj
http://pl.php.net/manual/pl/features.http-auth.php - chodzi mi o notki na dole oraz http://www.zend.com/zend/tut/authentication.php
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.