Dzień dobry, mam taki problem, że po hashowaniu hasła i dodania go do bazy danych, a następnie próbie zalogowaniu przy użyciu password_verify(), nie da się zalogować. Sprawdzałem kod pare razy i nic nie znalazłem, dodam, że zanim dodałem hash przy rejestracji, logowanie przechodziło bez problemu.
<?php
session_start();
if((isset($_SESSION['zalogowany'])) && ($_SESSION['zalogowany']==true)) //jesli zalogowany to przekieruj
{
header('location:profil.php');
exit();
}
?>
<html>
<head>
<meta charset="utf-8">
<title>Moba Star | Strona głowna</title>
</head>
<body>
<a href="index.php"><h1>Moba Star</h1></a>
<form method="POST" action="index.php">
Nick <input type="text" name="nick"><br>
Hasło <input type="password" name="pass"><br>
<input type="submit" value="Zaloguj" name="submit">
</form><br>
Nie masz konta? <a href="rejestracja.php">Zarejestruj się</a> już teraz!<br>
<?php //skrypt logowania
require_once "connect.php";
$db=mysqli_connect("$host", "$db_user", "$db_password","$db_name");
if(isset($_POST['submit']))
{
$nick=$_POST['nick'];
$pass=$_POST['pass'];
$nick=htmlentities($nick, ENT_QUOTES,"utf-8"); //zmiana znakow specjanlych na encje
if(empty($nick)||empty($pass))
{
echo "Nie podano danych logowania";
}
else
{
if(mysqli_num_rows(mysqli_query($db,
sprintf("select * from konto where nick='%s'",
mysqli_real_escape_string($db,$nick) )))>0)
{
$qu="SELECT * from konto WHERE nick='$nick'";
$result=mysqli_query($db,$qu);
$row=mysqli_fetch_array ($result);
if (password_verify($pass, $row['pass'])) // weryfikacja hasla
{
$_SESSION['zalogowany']=true;
$_SESSION['nick']=$nick;
$id_k=$row['id_konto']; //uzyskiwanie id konta
$_SESSION['id_k']=$id_k;
$qu="SELECT * from pieniadze WHERE id_konto='$id_k'"; //uzyskiwanie ilosci pieniedzy
$result=mysqli_query($db,$qu);
$row=mysqli_fetch_array ($result);
$_SESSION['dolar']=$row['ilosc_dolar'];
$qu="SELECT * from rola_konta WHERE id_konto='$id_k'"; //uzyskiwanie danych o roli
$result=mysqli_query($db,$qu);
$row=mysqli_fetch_array ($result);
$_SESSION['rola']=$row['rola'];
header('location:profil.php');
}
else
{
echo "Nieprawidłowy login lub hasło";
}
}
else
{
echo "Nieprawidłowy login lub hasło";
}
}
mysqli_close($db);
}
?>
</body>
</html>
Jeśli w if (password_verify($pass, $row['pass']) dodam warunek == false to wystarczy wprowadzenie nicku do zalogowania