Сначала, почему вы применяете функцию substr()
к хешированному паролю
Функция substr()
используется для вырезания части строки из строки, начиная с указанной позиции и т. Д.
Если вы хотите проверить длину введенного пароля, вы должны использовать strlen()
, а затем вернуть пользователю сообщение, если длина пароля превышает 60
if (strlen($password)<60) {
echo "less than 60";
}
else
if (strlen($password)>40) {
echo "more than 60";
}
else {
echo "exactly 60";
}
Чтобы иметь возможность использовать password_verify()
, вам следуетиметь возможность сначала хешировать пароль пользователя во время регистрации через функцию password_hash()
.Например,
$password ='nancymore12344444';
$options = array("cost"=>4);
$hashPassword = password_hash($password,PASSWORD_BCRYPT,$options);
Опять они будут проблемой в вашем сценарии входа в систему, потому что я не видел, чтобы вы инициализировали сеанс с помощью session_start ()
Попробуйте код ниже, покаобеспечение ввода учетных данных базы данных и всех столбцов таблицы.у вас все будет в порядке
, поэтому ваш php регистрации будет выглядеть примерно так:
<?php
//require "file_db.php";
$conn = mysqli_connect("localhost","root","","demo");
if(!$conn){
die("Connection error: " . mysqli_connect_error());
}
if(isset($_POST['submit'])){
$firstName = mysqli_real_escape_string($conn,$_POST['first_name']);
$surName = mysqli_real_escape_string($conn,$_POST['surname']);
$email = mysqli_real_escape_string($conn,$_POST['email']);
$password = mysqli_real_escape_string($conn,$_POST['password']);
$options = array("cost"=>4);
$hashPassword = password_hash($password,PASSWORD_BCRYPT,$options);
$sql = "insert into users (first_name, last_name,email, password) value('".$firstName."', '".$surName."', '".$email."','".$hashPassword."')";
$result = mysqli_query($conn, $sql);
if($result)
{
echo "Registration successfully";
}
}
?>
ваш логин
<?php
//require "file_db.php";
$conn = mysqli_connect("localhost","root","","demo");
if(!$conn){
die("Connection error: " . mysqli_connect_error());
}
if(isset($_POST['submit'])){
$email = mysqli_real_escape_string($conn,$_POST['email']);
$password = mysqli_real_escape_string($conn,$_POST['password']);
$sql = "select * from users where email = '".$email."'";
$rs = mysqli_query($conn,$sql);
$numRows = mysqli_num_rows($rs);
if($numRows == 1){
$row = mysqli_fetch_assoc($rs);
if(password_verify($password,$row['password'])){
echo "Password verified and ok";
// initialize session if things where ok.
session_start();
session_regenerate_id();
$_SESSION['surname'] = $row['surname'];
$_SESSION['first_name'] = $row['first_name'];
$_SESSION['email'] = $row['email'];
// take me to welcome.php page
header('Location: welcome.php');
}
else{
echo "Wrong Password details";
}
}
else{
echo "User does not exist";
}
}
?>