Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Autoryzacja
Forum PHP.pl > Forum > PHP
nuerher
Witajcie.
Mam problemy z autoryzacją, a mianowicie przy wpisywaniu loginu oraz hasla (ktore sa poprawne) prosi mnie o ponowne i nastepnie ponowne wpisanie, po czym okazuje sie ze mnie wywala (przekroczony limit 3 prob). Podaje kod:

index.php
Kod
<?
$auth = false; // założenie o braku autoryzacji

if (isset($PHP_AUTH_USER) && isset($PHP_AUTH_PW)) {
  // Odczyt pliku z nazwami użytkowników i ich hasłami
  $filename = 'users.txt';
  $fp = fopen( $filename, 'r' );
  $plik = fread($fp, filesize($filename));
  fclose($fp);

  // Wstawienie każdej linii do tablicy
  $linie = explode ( "\n", $plik );

  // sprawdzenie każdej pary UŻYTKOWNIK:HASŁO
  foreach ($linie as $wiersz) {
    list($username, $password) = explode('|', $wiersz );
    if(($username == $PHP_AUTH_USER) && ($password == $PHP_AUTH_PW)) {
      $auth = true;
      break;
    }
  }
}

if (!$auth) {
  header('WWW-Authenticate: Basic realm="Obszar Autoryzacji"' );
  header('HTTP/1.0 401 Unauthorized' );
  echo "Przykro mi! Dostęp do tego zasobu wymaga autoryzacji.";
  exit;
} else {
  ?>

  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  <html>
  <head>
       <title>Strefa autoryzacji</title>
  <meta http-equiv="content-type"
    content="text/html; CHARSET=iso-8859-2">
  </head>

  <body>
  <h1>Witaj w strefie zabezpieczonej</h1>
  <?
  echo "<p>Zostałeś autoryzowany jako:
  <strong>".$PHP_AUTH_USER."</strong></p>";
}
?>

</body>
</html>


users.txt
Kod
pawel|agent
dupa|jasiu


W skrypcie odp. za porownywanie wpisanych loginu oraz hasla z dostepnymi z tymi w bazie bledu nie widze, dalej tez nie. Moze blad jest gdzies indziej? Nie wiem.

Duzo nie programuje, wiec zdaje sie na Waszą pomoc, za którą z góry dziękuję.
Ive
nie pomoge ci z problemem ale radze ci żebyś kodował hasła w pliku lub chociaz jakos wymyslnie nazwal ten plik z danymi userow bo ktos sobie wpisze w adresie www.twojadomena.pl/user.txt i juz ma dostep do wszystkich kont kazdego usera.
a jesli chodzi o problem to moze sprobuj poszukac na forum czegos [ fraza: autoryzacja etc. ], moze znajdziesz cos co cie zainteresuje ;]
nuerher
Cytat
radze ci żebyś kodował hasła w pliku lub chociaz jakos wymyslnie nazwal ten plik z danymi userow bo ktos sobie wpisze w adresie www.twojadomena.pl/user.txt i juz ma dostep do wszystkich kont kazdego usera.


Hmm..nie wiem co na to odp...
po prostu - wiem o tym. smile.gif
sf
  1. <?php
  2. $auth = false; // założenie o braku autoryzacji
  3.  
  4. if(isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) {
  5.  
  6.  $lines = file('users.txt');
  7.  
  8.  // sprawdzenie każdej pary UŻYTKOWNIK:HASŁO
  9.  foreach ($lines as $line) {
  10.  list($username, $password) = explode('|', $line );
  11.  if($username == $_SERVER['PHP_AUTH_USER'] && trim($password) == $_SERVER['PHP_AUTH_PW']) {
  12.  $auth = true;
  13.  break;
  14.  }
  15.  }
  16. }
  17. ?>


poczytaj o trim" title="Zobacz w manualu PHP" target="_manual no i tez features.http-auth" title="Zobacz w manualu PHP" target="_manual, a file" title="Zobacz w manualu PHP" target="_manual też by było fajnie jakbyś poznał

zamiast $auth lepiej chyba będzie zrobić funkcje, ale to już jak chcesz

nawiasy nie są potrzebne przy porównaniu == bo ma to wyższy priorytet niż &&
nuerher
Dzięki sf.Rkingsmiley.png

O podanych przez Ciebie funkcjach z pewnością poczytam.
(właściwie już się za to biorę). aarambo.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.