Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]błąd w skrypcie zmiany hasła
kosior11
post 21.07.2012, 12:11:43
Post #1





Grupa: Zarejestrowani
Postów: 101
Pomógł: 0
Dołączył: 20.03.2011

Ostrzeżenie: (10%)
X----


Korzystam z takiego skryptu logowania, w którym mam możliwość zmiany hasła, z tym,że jest w nim jeden mały błąd i nie wiem jak go rozwiązać.

Mianowicie aby zmienić hasło trzeba podać aktualne hasło, bo bez tego nie da rady zmienić - to jest OK
Ale np. podając aktualne hasło i np. nie wpisując w ogóle nowego i akceptując ten wybór edycja zostaje zachowana w bazie i użytkownik od tej chwili nie ma w ogóle hasła i tu jest mój problem, jak zrobić, tak:

jeśli wpisane zostało aktualne hasło to musi też zostac wpisane nowe hasło, bo jak nie to wyskoczy błąd

  1. // jeśli zostanie podane nowe hasło lub inny email
  2. if(!empty($_POST['new_password']) || $_POST['email'] != $user_data['user_email']) {
  3. // sprawdzamy czy zostało podane aktualne hasło
  4. if(empty($_POST['password'])) {
  5. $err = '<p>Jeśli chcesz zmienić hasło lub adres email musisz podać aktualne hasło.</p>';
  6. // jeśli zostało podane to sprawdzamy czy jest poprawne
  7. } elseif(codepass($_POST['password']) != $user_data['user_password']) {
  8. $err = '<p>Podane aktualne hasło jest nieprawidłowe.</p>';
  9. } else {
  10. // jeśli wszystko jest ok...
  11. // sprawdzamy czy user chce zmienić hasło
  12. [b]if(!empty($_POST['new_password'])) {
  13. $err = '<p>Jeśli chcesz zmienić hasło musisz podać nowe hasło.</p>';}[/b]
  14. // jeśli podane dwa hasła są różne to wyświetlamy błąd
  15. elseif($_POST['new_password'] != $_POST['new_password2']) {
  16. $err = '<p>Podane hasła nie są takie same.</p>';
  17. // jeśli wszystko jest ok, dopisujemy do zmiennej tymczasowej zapytanie do zaktualizowania hasła
  18. } else {
  19. $up2.= ", `user_password` = '".codepass($_POST['new_password'])."'";
  20. }
  21.  


Dodałem pogrubioną linię, myślałem że to pomoże ale niestety nic nie dało
Go to the top of the page
+Quote Post
Ruch Radzionków
post 21.07.2012, 12:26:41
Post #2





Grupa: Zarejestrowani
Postów: 311
Pomógł: 25
Dołączył: 29.08.2011

Ostrzeżenie: (0%)
-----


Cytat(kosior11 @ 21.07.2012, 13:11:43 ) *
  1. // jeśli zostanie podane nowe hasło lub inny email
  2. if(!empty($_POST['new_password']) || $_POST['email'] != $user_data['user_email']) {
  3. // sprawdzamy czy zostało podane aktualne hasło
  4. if(empty($_POST['password'])) {
  5. $err = '<p>Jeśli chcesz zmienić hasło lub adres email musisz podać aktualne hasło.</p>';
  6. // jeśli zostało podane to sprawdzamy czy jest poprawne
  7. } elseif(codepass($_POST['password']) != $user_data['user_password']) {
  8. $err = '<p>Podane aktualne hasło jest nieprawidłowe.</p>';
  9. } else {
  10. // jeśli wszystko jest ok...
  11. // sprawdzamy czy user chce zmienić hasło
  12. [b]if(!empty($_POST['new_password'])) {
  13. $err = '<p>Jeśli chcesz zmienić hasło musisz podać nowe hasło.</p>';}[/b]
  14. // jeśli podane dwa hasła są różne to wyświetlamy błąd
  15. elseif($_POST['new_password'] != $_POST['new_password2']) {
  16. $err = '<p>Podane hasła nie są takie same.</p>';
  17. // jeśli wszystko jest ok, dopisujemy do zmiennej tymczasowej zapytanie do zaktualizowania hasła
  18. } else {
  19. $up2.= ", `user_password` = '".codepass($_POST['new_password'])."'";
  20. }
  21.  


tu masz błąd:

  1. [b]if(!empty($_POST['new_password'])) {

powinno byc tak:
  1. if($_POST['new_password'] == '')

albo
  1. if(!isset($_POST['new_password']))


--------------------
Pomogłem daj pomógł
Go to the top of the page
+Quote Post
djgarsi
post 21.07.2012, 12:28:03
Post #3





Grupa: Zarejestrowani
Postów: 459
Pomógł: 26
Dołączył: 1.06.2009

Ostrzeżenie: (0%)
-----


Poza tym zabezpiecz cokolwiek ten skrypt bo wieje atakiem.


--------------------
Go to the top of the page
+Quote Post
wNogachSpisz
post 21.07.2012, 12:31:11
Post #4





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Cytat(djgarsi @ 21.07.2012, 13:28:03 ) *
zabezpiecz cokolwiek ten skrypt bo wieje atakiem.


W którym miejscu?
Go to the top of the page
+Quote Post
djgarsi
post 21.07.2012, 12:33:46
Post #5





Grupa: Zarejestrowani
Postów: 459
Pomógł: 26
Dołączył: 1.06.2009

Ostrzeżenie: (0%)
-----


Cytat(wNogachSpisz @ 21.07.2012, 13:31:11 ) *
W którym miejscu?


We fragmencie ktory podał nie ma zadnego filtrowania danych z formularza. Chyba że przed samym połaczeniem z bazą coś filtruje.


--------------------
Go to the top of the page
+Quote Post
sobol6803
post 21.07.2012, 12:36:27
Post #6





Grupa: Zarejestrowani
Postów: 115
Pomógł: 13
Dołączył: 19.06.2011
Skąd: Ruda Śląska

Ostrzeżenie: (0%)
-----


  1. if(!empty($_POST['new_password']))

To znaczy "jeśli nowe hasło nie jest puste zrób ...". Wywal ten wykrzyknik. Dodatkowo zrób jakieś bardziej zaawansowane sprawdzanie tego pola - trim, sprawdzaj ilość znaków strlen, daj jakiś wymóg, że musi być np. przynajmniej 6 znaków w haśle.


--------------------
  1. mysql_query("DROP DATABASE $_GET['dbname']");
Go to the top of the page
+Quote Post
kosior11
post 21.07.2012, 12:43:28
Post #7





Grupa: Zarejestrowani
Postów: 101
Pomógł: 0
Dołączył: 20.03.2011

Ostrzeżenie: (10%)
X----


Zmieniłem, próbowałem obie opcje i mimo wszystko zapisuje bez hasła :/
Go to the top of the page
+Quote Post
Ruch Radzionków
post 21.07.2012, 14:31:07
Post #8





Grupa: Zarejestrowani
Postów: 311
Pomógł: 25
Dołączył: 29.08.2011

Ostrzeżenie: (0%)
-----


pokaz cały kod php oraz html może gdzieś indziej masz błąd


--------------------
Pomogłem daj pomógł
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 17.06.2024 - 05:07