![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 16.01.2017 Ostrzeżenie: (0%) ![]() ![]() |
Cześć i czołem! Jestem nowy na forum i zwracam się do Państwa z problemem. Uczę się PHP od niedawna, dlatego mam problem z tak banalną (jak podejrzewam) rzeczą. Po kilku godzinach szukania kodu w błędzie proszę Was o pomoc.
Podjąłem naukę z kursami Mirosława Zelenta na jego kanale YT i stanąłem w miejscu, który właśnie przedstawię. Wszystko jest zapisane tak, jak było widoczne w filmie. Prezenter zademonstrował, że u niego ten kod zadziałał (wyświetlił się nick usera) z bazy. U mnie wyświetla się błąd: [[Parse error: syntax error, unexpected '"' in C:\xampp\htdocs\nauka\portal\zaloguj.php on line 18"]] Mam zaimportowane te same bazy danych, co prezenter na YT oraz wszystkie zmiennie są wpisane poprawnie. Czy ktoś mógłby mi pomóc? Oto kod zaloguj.php: CODE <?php require_once "connect.php"; $polaczenie = @new mysqli($host, $db_user, $db_password, $db_name); if ($polaczenie->connect_errno!=0) { echo "Error: ".$polaczenie->connect_errno; } else { $login = $_POST['login']; $pass = $_POST['pass']; $sql "SELECT * FROM uzytkownicy WHERE user='$login' AND pass='$pass'"; if ($rezultat =@$polaczenie->query($sql)) { $ilu_userow = $rezultat->num_rows; if ($ilu_userow>0) { $wiersz = $rezultat->fetch_assoc(); $user = $wiersz['user']; $rezultat->free_result(); echo $user; } else { } } $polaczenie->close(); } ?> Za pomoc serdecznie dziękuję. Jeśli to jest naprawdę jakiś błachy problem i ten temat nikomu się nie przyda, usunę go zaraz po tym jak Państwo pomogą ![]() |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
W linii 18 masz $sql "SELECT * FROM uzytkownicy WHERE user='$login' AND pass='$pass'";
Brakuje przypisania do zmiennej $sql. Uruchom jakiś porządny edytor typu Netbeans który od razu na czerwono podświetli linię z błędem. Do tego nigdy ale to nigdy nie uzywaj @. Nie będziesz w stanie znaleźć błędu w kodzie. Do tego mam nadzieję że później to poprawia bo w tej linii jest możliwe SQL injection. Zamiast query powinno być prepare - resztę zobacz w dokumentacji. -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 16.01.2017 Ostrzeżenie: (0%) ![]() ![]() |
Używam Notepad++, może być?
https://www.youtube.com/watch?v=Pp578w7C9hE 45-50 minuta - on nie miał tam żadnego przypisania do zmiennej $sql i mu zadziałało? Coś nie tak ![]() |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Miał, w linii 16.
http://php.net/manual/en/language.operators.assignment.php Taki materiał może ci pomóc ale nie zwalnia cię to z czytania dokumentacji celem poznawania języka. W stopce mam kilka podstawowych kursów. Notepad++ można co najwyżej wykorzystywać do szybkiej edycji plików ale na pewno nie do pisania większej ilości kodu. -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 16.01.2017 Ostrzeżenie: (0%) ![]() ![]() |
U mnie 18 linia jest jego 16stą
![]() Hmm dziękuję za informację. Pobiorę program, o którym mówisz i zabiorę się za studiowanie "Kurs PHP (część 1): podstawowy opis języka" z Twojej stopki. O Boże, nie miałem znaku równości po "$sql" PRZEPRASZAM za zawracanie czterech liter... Muszę zacząć nosić okulary. Dziękuję Ci bardzo, temat jest do usunięcia... ![]() |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
To jeszcze tak na marginesie poczytaj o prepare http://php.net/manual/en/mysqli.prepare.php zamiast mysqli_real_escape_string albo, o ogólnym sterowniku PDO. Co gorsza, chociaż jak widzę tłumaczy sql injection, to nie ustawia kodowania ktore ma ogromny wpływ na sposób traktowania znaków. Zdaje się że ten kod jest dalej dziurawy.
-------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 16.01.2017 Ostrzeżenie: (0%) ![]() ![]() |
Szkoda, że to po angielsku bo nie zrozumiem w 100% ale co nieco się dowiem.
Z "prepare" nie wyświetla nazwy użytkownika, a z "query" wyświetla ![]() |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Bo nie wystarczy tylko zamienić:
Co więcej, hasło powinno być zawsze przepuszczone przez np funkcję http://php.net/manual/en/function.password-hash.php i z tego kodu powyżej, przy tworzeniu tabeli user UNIQUE, później SELECT * FROM uzytkownicy WHERE user=? LIMIT 1; i na otrzymanym rekordzie http://php.net/manual/en/function.password-verify.php. -------------------- |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 16.01.2017 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję Ci za pomoc. Podobno o hashowaniu haseł będzie w następnych odcinkach. Chcę pracować po kolei, aby wszystko zrozumieć.
![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 18:53 |