Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Logowanie - powodzenie bez względu na wprowadzone dane
Forum PHP.pl > Forum > Przedszkole
pantomcio
Witam,

Mam problem z logowaniem, mianowicie warunek "if (mysql_num_rows($result) == 1)" jest spełniony zawsze bez względu na wprowadzone dane, efektem czego obojętnie jakich danych nie wpiszę i tak zostanę zalogowany. facepalmxd.gif

a sam kod wygląda następująco:

$inputUser = mysql_real_escape_string($_POST['login']);
$inputPass = mysql_real_escape_string($_POST['haslo']);

$query = "SELECT iduzytkownik from uzytkownicy WHERE login = '$inputUser' & haslo = PASSWORD('$inputPass')";
$result = mysql_query($query, $connection) or die ("Error in query: $query. " . mysql_error());

if (mysql_num_rows($result) == 1) {...};

Na moje oko jest napisany poprawnie, zatem może jakieś wskazówki gdzie w tym wypadku szukać błędu? siedzę nad tym drugi dzień, a być może któryś z Was miał już podobny problem smile.gif w ostateczności mogę wylać tutaj cały kod.

dzięki i pozdrawiam smile.gif
Rysh
Cytat(pantomcio @ 25.11.2014, 21:50:39 ) *
Witam,

Mam problem z logowaniem, mianowicie warunek "if (mysql_num_rows($result) == 1)" jest spełniony zawsze bez względu na wprowadzone dane, efektem czego obojętnie jakich danych nie wpiszę i tak zostanę zalogowany. facepalmxd.gif

a sam kod wygląda następująco:

$inputUser = mysql_real_escape_string($_POST['login']);
$inputPass = mysql_real_escape_string($_POST['haslo']);

$query = "SELECT iduzytkownik from uzytkownicy WHERE login = '$inputUser' & haslo = PASSWORD('$inputPass')";
$result = mysql_query($query, $connection) or die ("Error in query: $query. " . mysql_error());

if (mysql_num_rows($result) == 1) {...};

Na moje oko jest napisany poprawnie, zatem może jakieś wskazówki gdzie w tym wypadku szukać błędu? siedzę nad tym drugi dzień, a być może któryś z Was miał już podobny problem smile.gif w ostateczności mogę wylać tutaj cały kod.

dzięki i pozdrawiam smile.gif

A nie powinno byc?
  1. $query = 'SELECT iduzytkownik FROM uzytkownicy WHERE login=\''. $inputUser .'\' AND haslo=\''. md5($inputPass) .'\'';
Xart
Błąd masz w tej części kodu:

  1. $query = "SELECT iduzytkownik from uzytkownicy WHERE login = '$inputUser' & haslo = PASSWORD('$inputPass')";


użyłeś tutaj & a jest to w php Operator operacji bitowych

Dla logicznego AND trzeba wstawić && a więc:

  1. $query = "SELECT iduzytkownik from uzytkownicy WHERE login = '$inputUser' && haslo = PASSWORD('$inputPass')";
pantomcio
cenna uwaga, wielkie dzięki smile.gif

tylko tym razem nie pasują nawet poprawnie wpisane dane ohno-smiley.gif

do $inputUser i $inputPass dane są przypisywane poprawnie, a wpisywane dane na pewno są zgodne z tymi w bazie więc znów coś w powyższym kodzie...

dodam, że próbowałem obu Waszych rozwiązań.
__________________________________________

EDIT:

PASSWORD('$inputPass') oraz md5($inputPass) - tu jest problem.

wersja uproszczona działa bez problemu:

Kod
$query = "SELECT iduzytkownik from uzytkownicy WHERE login = '$inputUser' && haslo = '$inputPass' ";


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.