![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 30.11.2015 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Tworzę prostą aplikacje z logowanie i sesją. Jedno pyatanie zaznaczyłem jako komentarze w kodzie (wydaje mi się że chyba najlepsze rozwiązanie aby wytłumaczyć o co mi chodzi)
Odnośnie linijki 36 i 37: Czy dzięki takiej konstrukcji program przechwyci konkretne dane z bazy i przypisze je do tych zmiennych dzieki czemu będe mógł się do nich odwoływać na innych plikach tego projektu? Np. na stronie admin czy ten zapisa ma sens ? Której składni lepiej używać mysql czy mysqli? Ten post edytował jobp33 14.12.2015, 16:44:41 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 381 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
O rozszerzeniu mysql zapomnij, zostało usunięte.
W linii 31 masz podatność na SQL Injection. Stosuj bindowanie parametrów. mysqli_query zwraca result http://php.net/manual/pl/class.mysqli-result.php więc musisz go jeszcze wybrać np. poprzez http://php.net/manual/pl/mysqli-result.fetch-assoc.php header nie zadziała bo wysłałeś już tekst. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 218 Pomógł: 16 Dołączył: 6.06.2014 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Tak jak kolega wyżej napisał - header nie pójdzie. Użyj ob_start() na samym początku.
Dodawaj slashe do danych, które współgrają z bazą. Zdecyduj się czy używasz objektów czy strukturalnego. Wszystko robisz na strukturze i nagle object w 32 się pojawił. Między 32, a 35 nie masz nic co by Ci tego admina do 35 pobrało. Musisz użyć fetch_assoc lub fetch_array. Mysql nie używamy, a najlepiej teraz na PDO się przenosić już (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 30.11.2015 Ostrzeżenie: (0%) ![]() ![]() |
Wszystko robisz na strukturze i nagle object w 32 się pojawił. Z różnych jakiś rzeczy ktróre czytałem na temat MySQL i MySQLi to zrozumiałem, że MySQL to działania strukturalne a MySQLi to obiektowe (i jeszcze wspomniane przez ciebie PDO) więc jeśli jest inaczej czy ktoś by mógł jeszcze rozwinąć trochę tą kwestię? Bindowanie parametrów to już jest chyba PDO? |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
mysqli_* ma też odpowiedniki strukturalne.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 218 Pomógł: 16 Dołączył: 6.06.2014 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Tak jak napisał Pyton. Mysqli ma odpowiedniki strukturalne, gdzie chyba każdy różni się od mysql tylko literką i na końcu i podaniem nazwy połączenia. Ty cały czas działasz strukturalnie, aż do momentu 35 linijki gdzie się pojawia nagle jakiś object. Przerób sobie kod, aby był pod tym względem poprawny.
W samyn manualu już jest pokazane jak się łączyć i działać z mysqli objectowo. Nie wielka różnica, a lepiej wygląda i jest nowszym rozwiązaniem. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Kolejna uwaga, oddzielaj kod HTML od PHP.
Wrzuć sobie formularz do jednego pliku, a całość wysyłaj do drugiego pliku. Będziesz miał porządek i będziesz mógł łatwiej i klarowniej sterować przepływem tego co użytkownik robi. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 381 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
I jeszcze odnośnie bindowania parametrów: http://php.net/manual/pl/mysqli-stmt.bind-param.php
Oczywiście że jest też w mysqli. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 17 Pomógł: 0 Dołączył: 30.11.2015 Ostrzeżenie: (0%) ![]() ![]() |
Czy po takim zabiegu on przechwyci poszczególne dane do sesji? Czemu akurat te? Robię aplikacje w stylu "gieldy ogloszeń" i chcę aby każde dodane ogłoszenie było z automatu podpisane (zalogowany jan kowalski to podpis dodał jan kowalski, napis witający itp ). W którym miejscu należy sprawdzić czy konto jest admina i czy ma upranienia do komentowania?
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 381 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
A zajrzałeś do dokumentacji, bo na pewno nie tak wygląda prepare i na pewno nie przekazanie zmiennych z POST bo to przed niczym nie chroni. Do tego login jest pewnie jeden więc ograniczaj zapytanie LIMIT 1. W ten sposób dostajesz 1 rekord w zwrotce który jest tym właściwym.
Ten post edytował viking 15.12.2015, 12:07:24 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.09.2025 - 04:47 |