Autor |
Wiadomość
|
jarmiar |
Wysłany: Pon Sty 01, 2007 5:14 pm Temat postu: [php+mysql]logowanie |
|
|
 Pomocnik
Dołączył: 28 Sie 2006 Posty: 317
|
mam problem dot. logowania.
kiedy wpiszę byle co to pojawia mi się komunikat: Zalogowany, chociarz nie powinno tak być
proszę o pomoc!
Kod: |
<?
//poczatek
include('funkcje_bazy.php');
##############################
//zamiana zmiennych
$login = $_POST['login'];
$haslo = $_POST['haslo'];
polacz();
if (!"mysql_query(SELECT * FROM uzytkownicy WHERE login = '$login' AND haslo = '$haslo')") {
echo('Złe hasło lub login');
}
else {
echo('Zalogowany');
}
?> |
|
|
Powrót do góry |
|
 |
ghosti |
Wysłany: Pon Sty 01, 2007 8:25 pm Temat postu: |
|
|
 Operator
Dołączył: 26 Lis 2006 Posty: 538
|
|
Powrót do góry |
|
 |
jarmiar |
Wysłany: Pon Sty 01, 2007 9:00 pm Temat postu: |
|
|
 Pomocnik
Dołączył: 28 Sie 2006 Posty: 317
|
ghosti napisał: |
usun "" na starcie |
jak to bym usunąl to parser mi błąd wywali
ja już tak próbowałem
chodzi mi o to że mysql nie widzi wartości false |
|
Powrót do góry |
|
 |
ghosti |
Wysłany: Pon Sty 01, 2007 9:18 pm Temat postu: |
|
|
 Operator
Dołączył: 26 Lis 2006 Posty: 538
|
Kod: |
<?
include('funkcje_bazy.php');
##############################
//zamiana zmiennych
$login = $_POST['login'];
$haslo = $_POST['haslo'];
polacz();
$res=mysql_query(SELECT * FROM uzytkownicy WHERE login = '$login' AND haslo = '$haslo');
if (mysql_num_rows($res)>0)
// jesli bedziesz korzystal jeszcze z pol z tabeli uzytkownicy to zamiast powyzszego daj
// if ($rec = mysql_fetch_array($res))
echo('Zle haslo lub login');
else
echo('Zalogowany');
?> |
poczytaj kiedy mysql_query() zwraca wartosc FALSE... _________________ bankier fotka forum nastolatek ciechocinek toruń noclegi |
|
Powrót do góry |
|
 |
powerphp |
Wysłany: Wto Sty 16, 2007 11:16 pm Temat postu: |
|
|
Nowy
Dołączył: 16 Sty 2007 Posty: 1
|
Ale jak w apostrofy obejmiesz tylko zapytanie a nie funkcję to już parser nie wywali błędu.
W tym momencie wywaliłeś warunek jeżeli "ciąg znaków" no to jak najbardziej został spełniony i wyświetla Ci że zalogowany.
To jedna rzecz, druga jest taka że mysql_query nie mówi nic o liczbie przetworzonych wierszy i powinieneś rozwiązać to tak jak napisał ghosti.
Zapomniał tylko o tym że zapytanie sql powinno być w apostrofach bo dla skryptu to zwyczajny string. Tym też powinien być argument tej funkcji.
Wydaje mi się też, że warunek jest źle napisany
Cytat: |
if (mysql_num_rows($res)>0)
// jesli bedziesz korzystal jeszcze z pol z tabeli uzytkownicy to zamiast powyzszego daj
// if ($rec = mysql_fetch_array($res))
echo('Zle haslo lub login');
else
echo('Zalogowany');
|
moim zdaniem odwrotnie jeżeli mysql_num_rows zwróci więcej niż zero to znaczy że zalogowano a nie błędne id lub hasło.
Dodałbym jeszcze od siebie że na końcu zapytania dodał LIMIT 1, chociaż to żeby identyfikator był unikalny powinno być już obsłużone z poziomu bazy danych, jednak...
I zabezpiecz jakoś to zapytanie, a Ty walisz do zapytania to co dostałeś od użytkownika. Słyszałeś coś o atakach typu SQL Injection? Poczytaj bo warto! |
|
Powrót do góry |
|
 |
ghosti |
Wysłany: Pią Sty 19, 2007 10:48 am Temat postu: |
|
|
 Operator
Dołączył: 26 Lis 2006 Posty: 538
|
Kod: |
if (!"mysql_query(SELECT * FROM uzytkownicy WHERE login = '$login' AND haslo = '$haslo')") |
stad "" out mi chodzilo.. nawiasy powinny myc ale w ten sposob
Kod: |
if (!mysql_query("SELECT * FROM uzytkownicy WHERE login = '$login' AND haslo = '$haslo'")) |
odwrotnie masz racje, nie zwracalem na to uwagi, chodzilo bardziej o ukazanie samej idei.. _________________ bankier fotka forum nastolatek ciechocinek toruń noclegi |
|
Powrót do góry |
|
 |
prz3kus |
Wysłany: Wto Lut 20, 2007 12:08 pm Temat postu: |
|
|
 Ziomek
Dołączył: 29 Gru 2006 Posty: 124 Skąd: Ze wsi, a co? :>
|
Za bardzo już nie mam czasu się wgłębiać ale proponował bym zmienić
Kod: |
if (!"mysql_query(SELECT * FROM uzytkownicy WHERE login = '$login' AND haslo = '$haslo')") |
na
Kod: |
if (!"mysql_query(SELECT * FROM uzytkownicy WHERE login == '$login' AND haslo == '$haslo')") |
I powinno być ok |
|
Powrót do góry |
|
 |
matheus |
Wysłany: Czw Lut 22, 2007 10:51 pm Temat postu: |
|
|
Moderator
Dołączył: 22 Lis 2006 Posty: 487 Skąd: 3 Miasto
|
no troche temat stary odswierzyles... ale chyba wszystko juz jest ok
dizeki za zainteresowanie _________________ A biada milczącym o Tobie, że mając mowę, stali się niemymi.
| Sopot | | Lębork |
|
Powrót do góry |
|
 |
|