• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PHP nie czyta zahashowanego hasła z bazy danych

Cloud VPS
0 głosów
169 wizyt
pytanie zadane 3 czerwca 2021 w PHP przez Doge Gaduła (3,420 p.)

Witam, robię logowanie i rejestrację z kursu Pana Mirosława Zelenta i utknąłem w 3 odcinku, ponieważ do tej pory wszystko ładnie szło, lecz natrafiłem na jakiś błąd i nie mogę go zlokalizować. Kiedy dam

$bezpieczne_haslo = password_hash($haslo1, PASSWORD_DEFAULT);
		echo $bezpieczne_haslo;

wpiszę zmienną "$haslo1" i skopiuję "$bezpieczne_haslo", jakie zostało zaszyfrowane, wkleję do bazy danych, zatwierdzę, to nie mogę się tym hasłem zalogować

If z weryfikacją:

				if(password_verify($haslo, $wiersz['pass']))
				{
					$_SESSION['zalogowany'] = true;
					$_SESSION['id'] = $wiersz['id'];
					$_SESSION['user'] = $wiersz['user'];
					$_SESSION['drewno'] = $wiersz['drewno'];
					$_SESSION['kamien'] = $wiersz['kamien'];
					$_SESSION['zboze'] = $wiersz['zboze'];
					$_SESSION['email'] = $wiersz['email'];
					$_SESSION['dnipremium'] = $wiersz['dnipremium'];
					
					unset($_SESSION['blad']);
					
					$rezultat->close();
					
					header('Location: gra.php');
				}
				else
				{
					$_SESSION['blad'] = '<span style="color:red">Podano nieprawidłowy login lub hasło</span>';
					header('Location: index.php');
				}

kiedy dam if($haslo == $wiersz['pass']) i niezaszyfrowane hasło, wtedy mogę się normalnie zalogować. O co chodzi? Ponieważ jestem początkujący i nie mogę zauważyć problemu, a też żadne błędy nie wyskakują.

1 odpowiedź

+1 głos
odpowiedź 3 czerwca 2021 przez Arkadiusz Waluk Ekspert (290,310 p.)
wybrane 3 czerwca 2021 przez Doge
 
Najlepsza

Wygląda, że powinno działać na podstawie tego co pokazujesz. Ale nie wiemy jak wyciągany jest $wiersz, co jest w $haslo, więc proponuję zrobić prosty test. Wyświetl sobie sprawdzane wartości przed podanym tu ifem. Może być nawet prosty var_dump:

var_dump($haslo, $wiersz['pass']);

Aby go zobaczyć musisz jednak wyłączyć przekierowanie albo wrzucić jeszcze exit(); czy coś tego typu, aby przerwać wykonywanie dalszego kodu. Następnie porównaj czy na pewno $haslo się zgadza z tym, które wcześnie zahashowałeś. Upewnij się, że hash, który wprowadziłeś ręcznie do bazy zgadza się z tym, który tu pokaże aplikacja.

Może wartość z jakiegoś pola formularza nie dociera do tego momentu? Może hash wprowadzasz w bazie dla złego rekordu? Może kolumna na hash jest za krótka, przez co jest on ucinany w bazie i się nie zgadza?

1
komentarz 3 czerwca 2021 przez Doge Gaduła (3,420 p.)
Bardzo dziękuję, var_dump pomógł, problem był w tym, że przy wklejaniu dodała się spacja i nieprawidłowo odczytywało. Zauważyłem to dopiero po wyświetleniu całości w cudzysłowiu, a poza tym nie pomyślałbym, że spacja będzie miała na to wpływ.

Podobne pytania

0 głosów
2 odpowiedzi 271 wizyt
pytanie zadane 5 listopada 2019 w PHP przez natalkaplu Nowicjusz (120 p.)
0 głosów
0 odpowiedzi 193 wizyt
pytanie zadane 13 czerwca 2022 w PHP przez AnimaVillis Stary wyjadacz (13,470 p.)
+1 głos
1 odpowiedź 348 wizyt
pytanie zadane 18 stycznia 2022 w PHP przez rafana Użytkownik (950 p.)

93,464 zapytań

142,459 odpowiedzi

322,730 komentarzy

62,844 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...