Я пишу страницу входа и страницу проверки на php. На моей локальной машине это работает, но на сервере это не так (если это важно, я нахожусь на Windows, а сервер на Linux).php password check with hash не работает
Вот код на странице проверки:
$user = $_POST['userName'];
$pass = $_POST['pass'];
$saltSQL = 'SELECT salt FROM agents WHERE name="' . $user . '"';
$saltResult = mysql_fetch_array(mysql_query($saltSQL));
$salt = $saltResult['salt'];
$passToCheck = hash('sha512', $salt + $pass);
$rowAgent = mysql_fetch_array(mysql_query('SELECT * FROM agents WHERE name ="' . strtolower($user) . '"'));
if ($rowAgent['password'] != $passToCheck) {
header("location:mainLogin.php");
exit;
}
header("location:selectamount_new.php");
Самое странное в том, что когда я ввожу что-то с буквами на ввод пароля система пусть мой ин (независимо от того, что), и когда я вхожу просто цифры система будет правильно проверять пароль и не позволит мне (перенаправит меня на mainLogin.php, а не на selectamount_new.php).
Снова на моей локальной машине все работает отлично, проблема в том, что когда я нажимаю код на Linux-машину (AWS) с Git.
Являются ли кодировки символов одинаковыми на локальном компьютере и на сервере? –
Семейство SHA- * не подходит для хэш-паролей, потому что алгоритм работает слишком быстро. Посмотрите на функции [password_hash()] (http://www.php.net/manual/en/function.password-hash.php) и [password_verify()] (http://www.php.net /manual/en/function.password-verify.php). – martinstoeckli
@martinstoeckli спасибо! но, к сожалению, я в настоящее время не могу их использовать, я работаю над системой с PHP версии 5.3. К счастью, это временно, мы создаем новый back-end, и версия PHP будет более новой, поэтому я буду использовать их в будущем. – Nir