Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Weryfikacja logowania
Forum PHP.pl > Forum > Przedszkole
piter3
Witam.
Korzystam z następujacego skryptu logowania:

  1. <?php
  2. include("mysql.php");
  3.  
  4. if (!isset($_SERVER['PHP_AUTH_USER']))
  5. {
  6. header('WWW-Authenticate: Basic realm="Autoryzacja:"');
  7. header('HTTP/1.0 401 Unauthorized');
  8. }
  9.  
  10. else if(isset($_SERVER['PHP_AUTH_USER']))
  11. {
  12. $plik = "dane.mds";
  13. $fp = fopen($plik,"r");
  14. $WszystkieHasla = fread($fp, filesize($plik));
  15. fclose($fp);
  16. $LoginHaslo = explode("|", $WszystkieHasla);
  17. $k=sizeof($LoginHaslo)-1;
  18. for ($i = 0;$i<=$k;$i++)
  19. {
  20. $dane = explode(":", $LoginHaslo[$i]);
  21. $uzytkownik=strval($_SERVER['PHP_AUTH_USER']);
  22. $haslo=strval($_SERVER['PHP_AUTH_PW']);
  23. $mdhaslo=md5($haslo);
  24. if (($dane[0] == $uzytkownik) && ($dane[1] == $mdhaslo))
  25. {
  26. $spr=TRUE;
  27. break;
  28. }
  29. else
  30. {
  31. $spr=FALSE;
  32. }
  33. }
  34. if ($spr == TRUE)
  35. {
  36. echo '<html><head></head>';
  37. echo '<BODY onload="window.parent.location=';
  38. echo "'../www/index2.php'";
  39. echo'"><h4>Trwa ładowanie strony ...</h4></BODY></html>';
  40. }
  41. else
  42. {
  43. header('WWW-Authenticate: Basic realm="Autoryzacja:"');
  44. header('HTTP/1.0 401 Unauthorized');
  45. echo '<html><head></head>';
  46. echo '<BODY onload="window.parent.location=';
  47. echo "'denny.php'";
  48. echo'"><h4>Trwa ładowanie strony ...</h4></BODY></html>';
  49. }
  50. }
  51. ?>


mysql.php to plik który łączy się z bazą danych i pobiera sobie z niej nazwę i hasło użytkownika
następnie zapisuje te dane do pliku dane.mds, z którego później korzysta skrypt

Jednak to zabezpieczenie działa tylko gdy wchodzimy przez plik index.
Chciał bym zabezpieczyć także inne pliki w ten sposób aby wstawić do nich skrypt który by weryfikował
czy użytkownik wczesniej się zalogował czy nie, jeśli tak to strona otwierała by się dalej jeśli nie został
by przekiwerowany do strony logowania.
Czy jest możliwe napisanie czegoś takiego do tego skryptu? Troszkę się bawiłem ale nic z tego nie wyszło
uli
Nie jestem pewien na ile dobrze Ciebie zrozumiałem, ale Twój problem może być rozwiązany za pomocą sesji.

O sesjach w PHP.

Możesz wrzucić do zmiennej sesji wynik $spr i z niego korzystać.

Pamiętaj tylko, że na początku każdej strony musisz użyć

  1. <?php
  2. ?>
piter3
Więc tak. Utworzyłem plik spr.php ze skryptem sprawdzającym logowanie.
W tej chwili działa tak że jak jest zalogowany to wyświetla zalogowany a jak nie to że nie
docelowo ma być tak że jak będzie zalogowany to się wyświetli reszta strony
a jak nie to przekieruje do logowania. Problem jest tylko następujący:
Struktura mojej strony to ( w głównym katalogu ) foldery
autoryzacja
statystyki
strona
index.php
I index.php przekierowuje do autoryzacji a ta po poprawnej weryfikacji uruchamia stronę ../strona/index.php
I teraz jeżeli skrypt sprawdzający który utowrzyłem w pliku spr.php umieszcze w katalogu autoryzacja
to działa ok natomiast gdy wykonam go np w katalogu strona to już sobie nie radzi i cały czas wyświetla że jestem niezaogowany.
A oto zawartość spr.php
  1. <?php
  2. if (!isset($_SERVER['PHP_AUTH_USER']))
  3. {
  4. echo 'niezalogowany';
  5. }
  6. else if(isset($_SERVER['PHP_AUTH_USER']))
  7. {
  8. echo 'zalogowany';
  9. }
  10. ?>


Pewnie znowu coś namieszałem cool.gif




doszedłem do tego że w podkatalogach strony autoryzacja wszystko działa
problem dotyczy plików w katalogach równożędnych

Ok, umieściłem pliki skryptu w głównym katalogu i wszystko działa tak jak chciałem.
Dzięki za pomoc.
Ociu
huh, może poprostu użyć $_SESSION ? 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.