covall
25.05.2004, 14:36:37
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
25.05.2004, 15:26:29
czyżby register_globals = Off ?
covall
25.05.2004, 15:52:07
Nie... wręcz przeciwnie... Register Globals = ON :? .
kszychu
25.05.2004, 15:57:48
Zmień komunikaty błędów, tak, by można było zobaczyć, na którym etapie wywala komunikat.
covall
25.05.2004, 16:33:17
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
30.05.2004, 21:11:54
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.