[MySQL] logowanie, czemu to nie działa?

0

Witam ponownie...

Napisałem taki oto szybki skrypt na logowanie (pseudo jak na razie) i nie chce działać.. Zaraz wyjaśnie o co chodzi. Najpierw napisałem coś takiego:

[code]

<? if($send=='Wyslij') { mysql_connect ("127.0.0.1","root","krasnal"); mysql_select_db (baza1); $zapytanie = "SELECT * FROM members WHERE login='$login' AND password='$password'"; $wykonaj = mysql_query ($zapytanie); if($wykonaj) echo("Login i hasło poprawne"); } ?>[/code]$login i $password to parametry przekazane z formularza z innej strony przez GET (wczesniej sprawdziłem na tej stronie, czy w ogole się dobrze przekazują przez ECHO i normalnie pokazało to co wpisałem). Niestety pojawia się problem:
  1. jesli dam taki warunek login='$login' , pass... , to za każdym razem pokazuje ze login i hasło jest poprawne, nawet jeśli fizycznie nie jest.

  2. jesli dam taki warunek login=='#login', pass... itd, to nigdy nie pokazuje ze jest poprawne.

W bazie się wszystko zgadza, sprawdzałem 10 razy... co robię źle? - przypuszczam ze to kwestia jakiegoś drobnego buga, niestety jestem początkująym mysqlowcem i na razie nie widze za bardzo tego :-/

0
$sql = 'SELECT * FROM tabela WHERE login = "' . $login . '" AND password = "' . $password . '"';

I takie zapytanie jest poprawne. Teraz jezeli rzeczywiscie takie dane znajduja sie w tabeli to nie ma sil... zwroc uwage na takie szczegoly jak spacje na koncu loginu etc.

Zawsze tez sprawdzaj rezultat otrzymanego zapytania:

if ( !mysql_query($sql))
{
   echo mysql_error();
}

Tak samo sprawdzaj czy nawiazales polaczenie. Dodatkowo nie odczytuj zmiennych przekazywanych przez GET w ten sposob - $password. Rob tak: $_GET['password'].

No i ostatnie:

if($wykonaj) echo("Login i hasło poprawne"); 

To sprawdza, czy zaoytane jest poprawne - jest, wiec zawsze kod zostanie wykonany. Uzyj mysql_num_rows()

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.