• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Kurs PHP odc.2 zła ścieżka w ifie

Object Storage Arubacloud
0 głosów
470 wizyt
pytanie zadane 23 października 2016 w PHP przez Maciejjy Nowicjusz (120 p.)

Dzień dobry.

Właśnie robię kurs PHP (BARDZO fajnie zrobiony!) i niestety utknąłem w jednym miejscu. Pomimo przeglądania wiele razu kodu i nawet próby skopiowania konkretnej linii (w której chyba jest błąd) z pliku źródłowego ze strony, nie potrafię powiedzieć co jest nie tak.

Problem dotyczy drugiego odcinka kursu i pliku "zaloguj.php".

Robimy tam ifa, który sprawdza czy zmienna $regulamin to poprawna kwerenda SQL i zaczyna walidacje użytkownika. Wygląda to tak:

......
else
	{
		$login = $_POST["login"];
		$password = $_POST["password"];
		
		$sql = "SELECT * FROM uzytkownicy WHERE user='$login' AND pass='$password'";
		
		if ($rezultat = @$polaczenie->query($sql))
		{
			$ilu_userow = $rezultat->num_rows;
			if ($ilu_userow == 1)
			{
				$wiersz = $rezultat->fetch_assoc();
				$user = $wiersz['user'];
				
				
				$rezultat->free();
				echo $user;
			}
			else
			{
				echo "brak uzytkownika w bazie";
			}
		}
		else
		{
			echo "złe zapytanie";
		}
		
		$polaczenie->close();
	}

Kłopot w tym, że mi zawsze wykonuje się linia "echo "złe zapytanie"", czyli jakby warunek w ifie: ($rezultat = @$polaczenie->query($sql)) nie spełnia się.

Próbowałem zmieniać kwerende na taką, która na pewno jest poprawna, sprawdzałem ją w myphpadmin itd. Zmieniałem też warunek ifa na 100% dobry, czyli np. 1 ==1 i wtedy pętla idzie właściwą ścieżką.

Proszę o pomoc. :)

komentarz 23 października 2016 przez Maciejjy Nowicjusz (120 p.)
@Ehlert a ja właśnie zawsze czytałem, że programista powinien być ciekawy i rozumieć co się dzieje. Jak mi coś nie wychodzi, to chcę wiedzieć czemu, a nie po prostu przerywać i robić inaczej "bo tak jest źle". Co to w ogóle za podejście? Wiem, że jest źle, ale chce wiedzieć co konkretnie. Potem mogę iść dalej.

 

@efik SQL jest poprawny. Już nawet zmieniałem kwerende po prostu na "SELECT * FROM uzytkownicy" i jest tak samo. Wpisywałem też go to phpmyadmin i normalnie wywala jeden rekord jak wpiszę login i hasło. Wychodzi na to, że warunek:

if ($result = $mysqli->query($sql))

jest falsem i dlatego przechodzi do else. Dlaczego jest falsem? Tego nie wiem.
komentarz 23 października 2016 przez Ehlert Ekspert (212,670 p.)

Jest źle, bo tak się w php nie pisze. Nie wychodzi Ci, bo zrzynasz kod z kiepskiego kursu.

Zgadzam się że forma przekazu MZ. jest wspaniała. Ale czym innym jest to, co przekazuje. 

komentarz 23 października 2016 przez Maciejjy Nowicjusz (120 p.)
Ok, jest źle. Wiem już o tym.

Czy możesz mi tylko odpowiedzieć na zadawane już chyba 10 razy pytanie dlaczego u mnie nie działa, skoro na filmie działa?

Tylko tyle. I będę mógł dziś zasnąć spokojnie.
komentarz 23 października 2016 przez efiku Szeryf (75,160 p.)
POKAŻ CAŁY KOD ZALOGUJ.PHP PO TWOICH ZMIANACH.
komentarz 30 lipca 2018 przez Olek Szymański Użytkownik (920 p.)

@Ehlert, Z tym się zgodzę. Uważam, że nie warto oglądać zelenta. Myślę, że dobre polecone książki oraz dokumentacje, fora itp.

 

3 odpowiedzi

+1 głos
odpowiedź 26 października 2016 przez Karol Gasienica Użytkownik (640 p.)

Usuń @ z if i zobacz jakim błędem rzuci. Czyli zrób:

if ($rezultat = $polaczenie->query($sql))

PHP DOC

0 głosów
odpowiedź 26 października 2016 przez tinwepl Użytkownik (990 p.)
if($rezultat = @$polaczenie->query($sql))

Może palnę głupotę ale od kiedy w ifie można przypisać zmienną, jeśli ma sprawdzić true / false ?
1
komentarz 26 października 2016 przez Comandeer Guru (601,550 p.)
Od zawsze…
komentarz 26 października 2016 przez Arkadiusz Waluk Ekspert (287,950 p.)
A dlaczego miałoby nie być można?

Przykład działania https://3v4l.org/tTDrc
komentarz 26 października 2016 przez tinwepl Użytkownik (990 p.)
Faktycznie : D No to nie wiem jakoś mi w C++ wywalało błędy  :)
1
komentarz 26 października 2016 przez Comandeer Guru (601,550 p.)
Ale PHP != C++… To są zupełnie różne języki.
–2 głosów
odpowiedź 26 października 2016 przez tirith Mądrala (5,940 p.)

powinno być

 

 if ($rezultat == @$polaczenie->query($sql))

 

komentarz 26 października 2016 przez Arkadiusz Waluk Ekspert (287,950 p.)
No raczej nie...

Tak powinno być jeśli byśmy chcieli dostać błąd o niezadeklarowanej zmiennej, bo jak widzę w kodzie pytającego wcześniej deklaracji nie było. A to co robisz to porównanie, porównać do nieistniejącej zmiennej się nie da.

https://3v4l.org/EAR69
komentarz 26 października 2016 przez tirith Mądrala (5,940 p.)
Racja. Przepraszam za wprowadzenie w błąd

Podobne pytania

0 głosów
1 odpowiedź 200 wizyt
pytanie zadane 18 stycznia 2016 w PHP przez Bartłomiej Słowik Użytkownik (620 p.)
0 głosów
2 odpowiedzi 187 wizyt
pytanie zadane 28 grudnia 2015 w SQL, bazy danych przez ormu16 Gaduła (4,980 p.)
0 głosów
2 odpowiedzi 450 wizyt
pytanie zadane 9 maja 2017 w PHP przez rubiikk Obywatel (1,900 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...