Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z Autoryzacja HTTP
Forum PHP.pl > Forum > Przedszkole
imashjan
  1. <?php
  2.  
  3. header('WWW-Authenticate: Basic realm="logowanie');
  4. $authorized = FALSE;
  5. if ( (isset($_SERVER['PHP_AUTH_USER'] ) AND isset($_SERVER['PHP_AUTH_PW']) )) {
  6.  
  7.  mysql_connect ("****","*****","*****") or
  8.    die ("NIe można nawiazać połaczenia z bazą danych");
  9.   mysql_select_db ("******") or
  10.    die ("NIe można wybrać bazy danych");
  11.    
  12.   $query = "SELECT * FROM admini WHER username='{$_SERVER['PHP_AUTH_USER']}' and     password=PASSWORD('{$_SERVER['PHP_AUTH_PW']}')";
  13.   $result = mysql_query ($query);
  14.   $row = mysql_fetch_array ($query);
  15.   if ($row) {
  16.    $authorized = TRUE;
  17.    }
  18.   }
  19.   if (!$authorized){
  20.   header('WWW-Authenticate: Basic realm="logowanie"');
  21.   header('HTTP/1.0 401 Unauthorized');
  22.   }
  23.  
  24. ?>

i musze sie 3 razy logowac zeby sie zalogowac, polaczenie z baza dziala,
chce takze wyswietlic nazwe uzytkownika jak juz sie zaloguje, i nie wiem jak?
po nacisnieciu przycisku anuluj i tak sie wlancza strona docelowa, ktora ma byc chroniona przez hasło
Guest
Już na pierwszy rzut oka widać że masz coś za dużo nawiasów w if'ie. Więcej zamykasz niż otwierasz.
imashjan
nie stety nie jest dobra ilość tyle ile otwieram tyle samo zamykam, jest cos innego, tylko nie moge tego znaleść
Master Miko
Linia 12:
masz
  1. <?php
  2. $query = "SELECT * FROM admini WHER 
  3. ?>

zamiast WHERE
imashjan
masz racje, dzieki za znalezienie bledu, ale dalej musze 3 razy wpisac hasło zanim sie polaczy a i tak czy wpisuje czy klikam anuluj to strone wyswietla
Master Miko
Linia 3:
masz
  1. <?php
  2. header('WWW-Authenticate: Basic realm="logowanie');
  3. ?>

brakuje Ci jednego cudzysłowu po logowanie
imashjan
nie wiem, nie rozumie, ale nie dziala jest ciagle to samo
Master Miko
To jest jakieś dziwne:

  1. <?php
  2.  
  3.   $query = "SELECT * FROM admini WHERE username='{$_SERVER['PHP_AUTH_USER']}' and     password=PASSWORD('{$_SERVER['PHP_AUTH_PW']}')";
  4.  
  5. ?>

a nie powinno być:
  1. <?php
  2.  
  3.   $query = "SELECT * FROM admini WHERE username='{$_SERVER['PHP_AUTH_USER']}' and password='{$_SERVER['PHP_AUTH_PW']}'";
  4.  
  5. ?>
imashjan
problem tkwi w polaczeniu z baza danych, wogole sie z nia nie laczy, co ciekawe nie wurzuca zadnych bledow, ze sie nie polaczyl.
siemakuba
1. dodaj zaraz po mysql_query($query):
  1. <?php
  2. echo $query;
  3. ?>
i pokaz co wyswietla
2. zmien tak:
  1. <?php
  2. if (!$authorized)
  3. {
  4. header('WWW-Authenticate: Basic realm="logowanie"');
  5. header('HTTP/1.0 401 Unauthorized');
  6. echo 'sie nie udało sie';
  7. }
  8. ?>

zeby nie wyswietlalo sie to co ma sie nie wyswietlic jesli nie zalogowany.

pozdr.
imashjan
po wpisaniu 3 razy hasla i uzytkownika wyskoczylo :sie nie udalo sie
Master Miko
Daj to może na początku skryptu jeszcze:
  1. <?php
  2.  
  3.  
  4. ?>
em1X
  1. <?php
  2.  
  3. // ZMIENIŁEM NAZWY KOLUMN w MYSQL
  4.  
  5. $sql = mysql_connect ('localhost');
  6. $db = mysql_select_db ('test');
  7.  
  8. function auth() {
  9. header('WWW-Authenticate: Basic realm="Logowanie..."');
  10. header('HTTP/1.0 401 Unauthorized');
  11.  
  12. echo "<h1>Nie wolno Ci tu zagladac !";
  13. }
  14.  
  15. if ($_SERVER['PHP_AUTH_USER'] && $_SERVER['PHP_AUTH_PW'])
  16. {
  17. $check = "select count(*) from admini where ".
  18.  "user = '".$_SERVER['PHP_AUTH_USER']."' ".
  19.  "AND passwd = PASSWORD('".$_SERVER['PHP_AUTH_PW']."')";
  20.  
  21. $query = mysql_query($check);
  22. $check = mysql_result($query, 0);
  23.  
  24. // PAMIETAMY O ZWALNIANIU ZASOBÓW !!!!!!!!!!!!!
  25.  
  26. if (!$check) auth();
  27. }
  28.  
  29. echo "Witaj mociumpanie!";
  30.  
  31. // PAMIETAMY O ZAMYKANIU POŁĄCZEN !!!!!!!!!!!!!
  32.  
  33. ?>


PS: zmien nazwe kolumny z password na np. passwd - nazywanie kolumn słowami kluczowymi MySQL'a prowadzi do niezłych błędów w ogóle nie sygnalizowanych
siemakuba
a moze poprostu nie doczytałeś w manualu/nie zwróciłeś uwagi na to, że:
Cytat
Autoryzacja HTTP jest obsługiwana przez php tylko wtedy, gdy php pracuje jako moduł Apache'a, nie jest dostępna w trybie CGI.
?

http://pl.php.net/manual/pl/features.http-auth.php
pozdr.
imashjan
fakt siemakuba masz racje zapomnielam o tym
i probem rozwiwany dzieki za przypomnienie, przeciez sprawdzalem sam wczesniej jak dziala , jeszcze raz dzieki
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.