![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 236 Pomógł: 0 Dołączył: 4.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Mam z internetu taki formularz dot. zmiany hasła w panelu użytkownika:
W bazie hasła w rejestracji koduje tak: Teraz problem pojawia się w edycji i uwierzytelnianiu. Po wpisaniu hasła takiego, jak przy rejestracji, wyskakuje komunikat, że hasła są nieprawidłowe. Jednak po skopiowaniu zakodowanego hasła i wpisanie go w pole formularza - wszystko jest ok. Błędem jest odkodowywanie hasła w pliku dot. edycji hasła. Jak to naprawić? Dzięki, pozdrawiam (IMG:style_emoticons/default/wink.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Po pierwsze zauważ, że element tablicy $_POST['zapisz'] istnieje (jest ustawiony, ang. isset) tylko wtedy, gdy wyślesz dane poprzez formularz. Oznacza to, że przy każdym pierwszym wejściu na stronę będzie pojawiał się komunikat uwagi NOTICE, ponieważ takiego elementu jeszcze w talicy $_POST nie ma. W tym przypadku trzeba zastąpić linię 13 takim kodem (który de facto niewiele się różni):
Użytkownika powinieneś identyfikować po jego id, a nie po loginie. Skoro jest to formularz zmiany hasła i możesz określić login użytkownika, to i możesz określić jego id. Zastąp zatem ukryte pole login ukrytym polem id, i przekazuj w nim identyfikator użytkownika. Trzecia sprawa to kwestia użycia funkcji empty(). Po co kodować pusty łańcuch znaków (bo to się właśnie dzieje, gdy użytkownik nie uzupełni któregoś z pól)? Linie 16, 17 i 18 powinny się znaleźć dopiero w bloku if(empty($wiadomosc)) {. Natomiast instrukcja warunkowa w linii 20 powinna wyglądać tak: Pozostaje jeszcze kwestia użycia funkcji addslashes(). Modyfikuje ona hasło podane przez użytkowniaka, a wcale nie jest tutaj potrzebna. Oznacza to tyle, że hasło w bazie danych nie jest hasłem użytkownika. Jest wiele sposobów na zabezpieczenie hasła np. sól, podwójne hashowanie lub "miks" obu wspomnianych metod, itp. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 8.10.2025 - 23:05 |