Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z autoryzacją i pobieraniem danych z bazy.
Forum PHP.pl > Forum > Bazy danych > MySQL
covall
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ć.'
kszychu
czyżby register_globals = Off ?
covall
Nie... wręcz przeciwnie... Register Globals = ON :? .
kszychu
Zmień komunikaty błędów, tak, by można było zobaczyć, na którym etapie wywala komunikat.
covall
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]
covall
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.
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.