Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z autoryzacją i pobieraniem danych z bazy.
covall
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 9.03.2004
Skąd: Stalowa Wola

Ostrzeżenie: (0%)
-----


Oto mój skrypt login.php
[php:1:2a54e88739]<?
mysql_connect("serwer", "login", "haslo");
mysql_select_db("baza");
if(!isset($PHP_AUTH_USER)) {
header('WWW-Authenticate: Basic realm="Witaj w panelu
administracyjnym ."');
header('HTTP/1.0 401 Unauthorized');
echo "Nie mogę Cię zalogować.";
exit;
} else {
$sprawdz = "SELECT pass FROM users WHERE login='$PHP_AUTH_USER'";
$pass_db = mysql_query($sprawdz) or die(mysql_error());
if($PHP_AUTH_PW != "$pass_db") {
header('WWW-Authenticate: Basic realm="Witaj w panelu administracyjnym."');
header('HTTP/1.0 401 Unauthorized');
echo "Nie mogę Cię zalogować.";
exit;
} else {
echo "Zalogowałeś się pomyślnie.";
}
}
?>[/php:1:2a54e88739]

Problem jest następujący... gdy chcę się zalogować i wpisuje dobre dane 3 razy wyskakuje okienko logowania, a następnie wyskakuje komunikat 'Nie mogę Cię zalogować.'
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
kszychu
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

Ostrzeżenie: (0%)
-----


czyżby register_globals = Off ?
Go to the top of the page
+Quote Post
covall
post
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 9.03.2004
Skąd: Stalowa Wola

Ostrzeżenie: (0%)
-----


Nie... wręcz przeciwnie... Register Globals = ON :? .
Go to the top of the page
+Quote Post
kszychu
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

Ostrzeżenie: (0%)
-----


Zmień komunikaty błędów, tak, by można było zobaczyć, na którym etapie wywala komunikat.
Go to the top of the page
+Quote Post
covall
post
Post #5





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 9.03.2004
Skąd: Stalowa Wola

Ostrzeżenie: (0%)
-----


Ok już mam, wielkie dzięki za pomoc kszychu. Problem polegał na tym, że nie zastosowałem instrukcji warunkowej. Poniżej podaję kod, może komuś kiedyś się przyda.[php:1:7ff87821ff]<?
mysql_connect("serwer", "login", "haslo");
mysql_select_db("baza");
if(!isset($PHP_AUTH_USER)) {
header('WWW-Authenticate: Basic realm="Witaj w panelu administracyjnym."');
header('HTTP/1.0 401 Unauthorized');
echo "Nieprawidłowy login.";
exit;
} else {
$sprawdz = "SELECT pass FROM users WHERE login='$PHP_AUTH_USER'";
$pass_db = mysql_query($sprawdz) or die(mysql_error());
if($row = mysql_fetch_array($pass_db))
$haslo_db = $row['pass'];
if($PHP_AUTH_PW != "$haslo_db") {
header('WWW-Authenticate: Basic realm="Witaj w panelu administracyjnym."');
header('HTTP/1.0 401 Unauthorized');
echo "Nieprawidłowe haslo";
exit;
} else {
echo "Zalogowałeś się pomyślnie <B>$PHP_AUTH_USER.</B>";
}
}
?>[/php:1:7ff87821ff]
Go to the top of the page
+Quote Post
covall
post
Post #6





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 9.03.2004
Skąd: Stalowa Wola

Ostrzeżenie: (0%)
-----


8O ups... zauważyłem poważnego buga w moim skrypcie. Chodzi o to, że jeżeli ktoś poda login, którego nie ma w bazie, to wtedy może podać jakiekolwiek hasło i być zalogowanym jako $PHP_AUTH_USER. Więc postanowiłem zmodyfikować skrypt...
[php:1:75523ca241]
<?
mysql_connect("serwer", "login", "haslo");
mysql_select_db("baza");
$pobierz = "SELECT login FROM engine_users";
$wykonaj = mysql_query($pobierz) or die(mysql_error());
if($wiersz=mysql_fetch_array($wykonaj)) {
$login = $wiersz['login'];
} if($PHP_AUTH_USER != "$login" || !isset($PHP_AUTH_USER)) {
header('WWW-Authenticate: Basic realm="Witaj w panelu administracyjnym serwisu GtaGame.prv.pl, proszę podać swój login oraz hasło."');
header('HTTP/1.0 401 Unauthorized');
echo "Nieprawidłowy login.";
exit;
} else {
$sprawdz = "SELECT pass FROM engine_users WHERE login='$PHP_AUTH_USER'";
$pass_db = mysql_query($sprawdz) or die(mysql_error());
while($row = mysql_fetch_array($pass_db))
$haslo_db = $row['pass'];
if($PHP_AUTH_PW != "$haslo_db") {
header('WWW-Authenticate: Basic realm="Witaj w panelu administracyjnym."');
header('HTTP/1.0 401 Unauthorized');
echo "Nieprawidłowe haslo";
exit;
} else {
echo "Zalogowałeś się pomyślnie <B>$PHP_AUTH_USER.</B>";
}
}
?>
[/php:1:75523ca241]

Lecz teraz moze logować się tylko użytkownik, który w tabeli ma nadany id=1. Reszcie wywala, że nieprawidłowy login. Problem podobny jak ten pierwszy, lecz teraz tyczy się loginu. Wiecie może co zrobić? WIelkie dzięki za pomoc.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 17.09.2025 - 20:53