![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 0 Dołączył: 19.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
Witam, stworzyłem taką oto funkcję
Niestety funkcja nie działa. Próbuję ją wykorzystać między innymi w taki sposób:
Proszę o wskazanie moich błędów. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Zobacz sobie co zwraca mysql_fetch_assoc. A tak swoją drogą, to Twoja funkcja woła o pomstę do nieba. Poczytaj o SQL Injection, a poza tym po co robisz cokolwiek po użyciu instrukcji return? Ona kończy działanie funkcji i Twoje mysql_close oraz exit nigdy nie zostaną wykonane. Zresztą sens wstawienia tam exit też jest dla mnie zagadką.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 0 Dołączył: 19.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
Niektóre z elementów mojego kodu mogą być bez sensu, ponieważ cały czas jestem w jednym z początkowych stadiów poznawania tego języka.
Chciałbym jeszcze podpytać, czy
jest poprawne, czy muszę dać indeks w '' czy musi to być pole z bazy? Aha, Sql Injection raczej mi nie grozi, ponieważ wszystkie zmienne sa na sztywno wsadzone w kod. Przy czym, próbowałem już tego na innych moich skryptach i stety/niestety nie udawało mi się zhackować samego siebie. Ten post edytował Matt23 23.07.2014, 21:33:39 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Moim zdaniem jeśli funkcja nazywa się ile_rekordow(), to powinna zwracać finalną liczbę, a nie tablicę. W Twoim przypadku zamiast mysql_fetch_assoc zastanowiłbym się czy nie lepiej użyć mysql_result, która nie zwraca tablicy, ale wartość właściwą.
Co do SQL Injection, to w programowaniu chodzi też o to, żeby pisać kod z myślą o przyszłości. Twoja funkcja może się przydać w Twoich przyszłych projektach i lepiej, żeby była odporna na wszystko. Kiedyś możesz zapomnieć, że ona ma taką wadę i wtedy klops (IMG:style_emoticons/default/smile.gif) Fajnie, że się uczysz! |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 0 Dołączył: 19.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
Trochę popracowałem i mam coś takiego
Rzecz jasna, nie działa (IMG:style_emoticons/default/wink.gif) Dlaczego? Nie ważne co wpiszę w formularzu, zawsze zwraca że taki użytkownik nie istnieje.
Więc wykonuje sie o dziwo drugi if{}. Niestety echo $ist_nick nie zwraca nic. Czy zapytania do bazy są poprawnie skonfigurowane? |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Jesteś pewien, że prawidłowo łączysz się z bazą? Możesz na próbę zrobić jakieś zapytanie i w razie problemów wywalić błąd:
Taka luźna myśl, może prościej byłoby, gdyby funkcja przyjmowała tylko dwa argumenty: nazwę tabeli i tablicę pól? Czyli wywoływałbyś ją np. tak: |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 0 Dołączył: 19.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
Łączenie z bazą działa na pewno, ponieważ dzieje się to w zaincludowanym config.php.
zapytania w funkcji zmieniłem na a w sprawdzeniu na min. W wywoływaniu skryptu dostaję Warning: mysql_num_rows() expects parameter 1 to be resource, null given in C:\WebServ\httpd\admin\login.php on line 38 nie wiem dlaczego |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
W poście #6 jest podpowiedź jak wyświetlić błędy w zapytaniach
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 0 Dołączył: 19.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
@up
Dopisałem do zapytań w funkcji, ale nie pokazuje mi żadnych errorów w wyniku w pliku login.php (który wykonuje te funkcje) cały czas jest ten warning z poprzedniego posta |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Pokaż cały kod jak teraz wygląda
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 0 Dołączył: 19.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
Plik login.php
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 0 Dołączył: 19.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
@up
dodałem to między 7 a 8 linią i po wprowadzeniu wszystkich kombinacji danych (user istenieje, hasło nie itp) cały czas var dump daje NULL jest error Warning: mysql_num_rows() expects parameter 1 to be resource, null given in C:\WebServ\httpd\admin\login.php on line 99 czyli w pierwszym IF{} cos mu nie pasuje (linia 8 w poprzednim poscie) aczkolwiek wyświetla alerta zapisanego w tym IFie |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli var_dump daje null, to znaczy że żaden warunek w funkcji nie został spełniony
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Zauważ, że przekazujesz liczbę do mysql_num_rows.
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 0 Dołączył: 19.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
@SmokAnalog,
więc chyba porównując czy przekazana liczba == 1 nie popełniam błędu? Rozumiem, że zapytania w funkcji są do poprawy, tak? |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Miałem na myśli ten fragment:
Zmienna $ist_user_haslo zawiera liczbę zwróconą przez ile_rekordow(), a Ty podajesz ją jako parametr mysql_num_rows. To nie ma sensu (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 0 Dołączył: 19.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
Usunąłem mysql_num_rows i nadal nic nie idzie, vardump null.
Skrypt ładnie działał, nawet jak liczbę brałem do tablicy (a właściwie "programista" tego systemu logowania tak robił), lecz odkąd zacząłem poznawać funkcje zachciało mi się kombinować. :| |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Musisz się nauczyć debugować kod. Wstaw na przykład do każdego ifa w funkcji die('Coś'), żeby zobaczyć która instrukcja się wywołała. Twoja funkcja jest generalnie kiepsko napisana na ten moment, jest mało czytelna i mało elastyczna. Moim skromnym zdaniem jest też zbędna, bo co za problem wywołać mysql_num_rows? No ale uczysz się, to warto na takim przykładzie.
|
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 53 Pomógł: 0 Dołączył: 19.01.2013 Ostrzeżenie: (0%) ![]() ![]() |
Skoro twierdzisz, że to bezsensu, to chyba sobie daruje. Wprawdzie takich sprawdzeń mam w kodzie więcej, ale szkoda mi na to czasu.
Dziękuję wszystkim za próbę pomocy. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 16:06 |