[PHP]Problem z funkcją logowania się |
[PHP]Problem z funkcją logowania się |
21.01.2016, 15:24:16
Post
#1
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 18.01.2016 Ostrzeżenie: (0%) |
Piszę prostą stronę na której będzie można się rejestrować oraz logować, mam problem z funkcją logowania się i pomimo wielu prób nie mogę go rozwiązać.
Teoretycznie funkcja log_in z klasy User_Log_In powinna obliczać ilość linii odpowiedzi z bazy danych i na tej podstawie decydować czy użytkownik istnieje w systemie (wówczas liczba linii w odpowiedzi powinna wynosic 1) i właśnie tutaj mam problem. W tym momencie wywala mi błąd : "Fatal error: Can't use function return value in write context in C:\xampp\htdocs\php_new\classes\user_log_in.php on line 23" Ale podejrzewam, że coś innego również może być nie tak. Na dole zamieszczam listing poszczególnych plików: 1.logowanie.php
2.User.php
3.user_log_in.php
4.data_base.php z komentarzami dla siebie samego żeby lepiej zrozumieć kod
Myślę że może to być jakiś głupi błąd, bo nie jestem doświadczony, dlatego umieszczam w dziale przedszkole. Korzystam z phpMyAdmin Ten post edytował xsalok 21.01.2016, 15:27:16 |
|
|
21.01.2016, 15:29:34
Post
#2
|
|
Grupa: Zarejestrowani Postów: 915 Pomógł: 210 Dołączył: 8.09.2009 Skąd: Tomaszów Lubelski/Wrocław Ostrzeżenie: (0%) |
Operatory porównania to == i === a nie = (to operator przypisania).
"Fatal error: Can't use function return value in write context in C:\xampp\htdocs\php_new\classes\user_log_in.php on line 23" Ten post edytował redeemer 21.01.2016, 15:31:12 -------------------- |
|
|
21.01.2016, 15:31:47
Post
#3
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 18.01.2016 Ostrzeżenie: (0%) |
Okej, wcześniej musiałem mieć prawidłowy ale zacząłem grzebać w kodzie i zmieniać.
Aktualnie wyrzuca mi takie błędy: Notice: Use of undefined constant result - assumed 'result' in C:\xampp\htdocs\php_new\classes\data_base.php on line 45 Warning: mysql_num_rows() expects parameter 1 to be resource, string given in C:\xampp\htdocs\php_new\classes\user_log_in.php on line 23 |
|
|
21.01.2016, 15:33:58
Post
#4
|
|
Grupa: Zarejestrowani Postów: 915 Pomógł: 210 Dołączył: 8.09.2009 Skąd: Tomaszów Lubelski/Wrocław Ostrzeżenie: (0%) |
Masz dokładną nazwę pliku i numer linii.
Nie widzisz tu nic dziwnego? -------------------- |
|
|
21.01.2016, 15:34:26
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) |
Zamiast return result; powinno być return $result;
-------------------- Nie pomagam na pw, tylko forum.
|
|
|
21.01.2016, 15:37:52
Post
#6
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 18.01.2016 Ostrzeżenie: (0%) |
Przed chwilą to zauważyłem
Głupie błędy początkującego. Mimo to, ten warunek mi nie działa i nie wyświetla komunikatu o zalogowaniu się.
A zarówno login jak i hasło są poprawne :/ Ten post edytował xsalok 21.01.2016, 15:39:30 |
|
|
21.01.2016, 15:39:53
Post
#7
|
|
Grupa: Zarejestrowani Postów: 915 Pomógł: 210 Dołączył: 8.09.2009 Skąd: Tomaszów Lubelski/Wrocław Ostrzeżenie: (0%) |
Złe zapytanie SQL:
Zwróc uwagę na apostrofy. Ten post edytował redeemer 21.01.2016, 15:41:53 -------------------- |
|
|
21.01.2016, 15:43:23
Post
#8
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 18.01.2016 Ostrzeżenie: (0%) |
Wydaje mi się że to zapytanie jest już poprawne, ale błąd wciąż występuje. |
|
|
21.01.2016, 15:44:23
Post
#9
|
|
Grupa: Zarejestrowani Postów: 915 Pomógł: 210 Dołączył: 8.09.2009 Skąd: Tomaszów Lubelski/Wrocław Ostrzeżenie: (0%) |
Nie jest ;-) Wyświetl je sobie na ekran echo $sql, a zobaczysz czemu.
Ten post edytował redeemer 21.01.2016, 15:45:39 -------------------- |
|
|
21.01.2016, 15:50:53
Post
#10
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 18.01.2016 Ostrzeżenie: (0%) |
zapytanie wygenerowane (za pomocą narzędzi) z bazy danych:
zapytanie wygenerowane przez php:
Gołym okiem widać różnicę Otóż mądry ja zapomniałem że md5 musi mieć 32 znaki w polu które go przechowuje, a w bazie ustaliłem password na 30, stąd cały ambaras że obcinał o te 2 znaki i logowanie faktycznie było niepoprawne |
|
|
21.01.2016, 16:20:46
Post
#11
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
To teraz jeszcze przejdź na PDO zamiast nieaktualne mysql_*() oraz poczytaj o password_hash() password_verify().
-------------------- |
|
|
Wersja Lo-Fi | Aktualny czas: 23.04.2024 - 21:05 |