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

Błąd logowania (nie przekierowuje)

+1 głos
740 wizyt
pytanie zadane 15 sierpnia 2015 w PHP przez krecik1334 Maniak (58,390 p.)
<?php

	session_start();
	
	$old_sessionid = session_id();

	session_regenerate_id();

	$new_sessionid = session_id();

	if ((!isset($_POST['login'])) || (!isset($_POST['haslo'])))
	{
		header('Location: index.php');
		exit();
	}
	

    require_once 'abacabadabacabaeabacabadabacaba.php';

    $inputlogin = $_POST['login'];
    $inputhaslo = $_POST['haslo'];

    if(password_verify($inputlogin, $login) && password_verify($inputhaslo, $haslo)){
          $_SESSION['zalogowany'] = true;
	  unset($_SESSION['blad']);
	  session_write_close();
          header('Location: index.php');
    }
    else{
	  $_SESSION['blad'] = '<span style="color:red">Nieprawidłowy login lub hasło!</span>';
	  header('Location: index.php');
    }
?>

Problem z tym kodem jest taki że po sprawdzaniu hasła nie przekierowuje na index.php tylko dalej jest się w pliku zaloguj.php w ktorym jest logowanie. Co jest nie tak?

2 odpowiedzi

0 głosów
odpowiedź 15 sierpnia 2015 przez SyntaxError Pasjonat (17,170 p.)
Password_verify sprawdza hasło. Po co sprawdzać login? :D W dodatku funkcją, która służy do sprawdzania haseł.

PS. +1 za bcrypta. ;)
komentarz 15 sierpnia 2015 przez efiku Szeryf (75,160 p.)
Ciekaw jestem  jak wygląda pobieranie danych usera[ login (gdzie filtry?), hasło] z bazy.

W tym przypadku to pobierać dane usera(login,hasło) na podstawie jego loginu a później sprawdzać czy hasło się zgadza za pomoca password_verify.
komentarz 15 sierpnia 2015 przez SyntaxError Pasjonat (17,170 p.)
Dokładnie tak. A nie przekierowuje bo popatrz na ten warunek. Jednocześnie musi przejść password_verify dla loginu i hasła. Albo jednocześnie muszą obydwie nie przejść. Kiedy hasło jest poprawne to przechodzi jedno, a nie przechodzi drugie, więc ani if ani else się nie wykona. Taka jest moja teoria na ten temat. :D
komentarz 15 sierpnia 2015 przez efiku Szeryf (75,160 p.)
No musi być jakiś punkt odniesienia. Hehe oj dostałeś -1 a dobrze mówisz ;)
Ktoś musi się zapoznać z algo Bcrypt ;)
Zawsze może zrobić tak, że jak jest login i hasło hashowane to pobrać wszystkich userów i veryfikować w foreach czy styknie, prawda, że nie optymalne? :>
komentarz 15 sierpnia 2015 przez krecik1334 Maniak (58,390 p.)
Zarówno login jak i hasło leżą zahaszowane bcryptem w pliku, więc błąd nie leży tutaj. Nie mam logowania z bazy danych tylko logowanie z pliku bo jest tylko 1 user. Wersja php 5.6 nie działają mi headery na całej stronie pomocy.
komentarz 15 sierpnia 2015 przez SyntaxError Pasjonat (17,170 p.)
–1 głos
odpowiedź 15 sierpnia 2015 przez Dorion300 Szeryf (90,250 p.)
if(password_verify($inputlogin, $login) && password_verify($inputhaslo, $haslo))

A powinno być 2 razy password_verify?

Podejżewam że login nie jest hasłem.

no chyba że to przewidziałeś i funkcja celowo przyjmuje login, ale widać że kod staje się nieczytelny.

komentarz 15 sierpnia 2015 przez SyntaxError Pasjonat (17,170 p.)
Ale z tego co wiem to w bcrypcie masz ukryty jeszcze salt w haśle. Więc nawet jeśli te loginy są takie same to password _verify nie przejdzie (zwróci false), bo będzie szukał tego salta w ciągu znaków. A ten ciąg znaków to jest login, który nie ma żadnego salta.

Podobne pytania

–1 głos
4 odpowiedzi 903 wizyt
0 głosów
1 odpowiedź 182 wizyt
pytanie zadane 22 listopada 2019 w PHP przez manager96 Bywalec (2,050 p.)
0 głosów
2 odpowiedzi 514 wizyt
pytanie zadane 17 lutego 2016 w PHP przez dxq31 Początkujący (290 p.)

93,427 zapytań

142,421 odpowiedzi

322,649 komentarzy

62,787 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...