Я уверен, что это может быть просто для кого-то, но хорошо.
Мне тяжело, я хочу сделать логин, используя информацию о клиенте ispconfig, и он работает хорошо, за исключением того, что пароль должен соответствовать паролю ispconfig, который использует шифрование crypt/salt, насколько я знаю, как бы я совпадал с этим паролем пользователь вводит?
Пока у меня есть это, но я, похоже, не работаю:
$clientPassword = $_POST['password'];
$selectUserPass = mysqli_query($con, "SELECT * FROM client");
$Passcollected = stripslashes($selectUserPass['password']);
$salt = '$1$'.substr($saved_password, 3, 8).'$';
$clientPasswordSafe = crypt(stripslashes($clientPassword), $salt);
Благодарю!
Если пароль был действительно хэширован с помощью функции crypt()
, вы можете проверить его следующим образом:
$clientPassword = $_POST['password'];
$selectUserPass = mysqli_query($con, "SELECT * FROM client");
$Passcollected = $selectUserPass['password'];
$isPasswordCorrect = crypt($clientPassword, $Passcollected) === $Passcollected;
Или еще проще с новой функцией пароля:
$clientPassword = $_POST['password'];
$selectUserPass = mysqli_query($con, "SELECT * FROM client");
$Passcollected = $selectUserPass['password'];
$isPasswordCorrect = password_verify($clientPassword, $Passcollected);
Обратите внимание, что я не использовал функцию stripslashes(), экранирование не требуется перед хэшированием. Соль является частью сохраненного хэша и автоматически извлекается функцией проверки.
SELECT * FROM client
вернет всех клиентов, а не одного.