обычная аутентификация — PHP вход с солью не работает

Так что я довольно новичок в PHP, но я пытаюсь создать простую систему входа в систему.

Проблема, которая у меня есть сейчас, заключается в том, что по какой-то причине второй оператор SQL не выполняется или ничего не возвращает.

Вот код, который я использую.

include 'dbConn.php';
if(isset($_POST['submit']))
{
global $conn;
$username = $_POST['username'];
$password = $_POST['password'];

$saltSql = "SELECT salt FROM users WHERE email = '$username'";
$saltRes = $conn->query($saltSql);
while($resRow = $saltRes->fetch_assoc()){
$salt = $resRow['salt'];
}
$saltedHash = hash("sha512", ($password . $salt));
$sql = "SELECT email, role, FROM users WHERE email = '$username' AND password = '$saltedHash'";
$res = $conn->query($sql);

if($res->num_rows == 1)
{
//Logged in succesfully
echo "Logged in!";
}
else
{
//Something went wrong
echo "Something went wrong";
}
$conn->close();
}

Когда я вручную пытаюсь выполнить второй запрос в phpmyadmin, я получаю эту ошибку: # 1064 — у вас есть ошибка в вашем синтаксисе SQL; проверьте правильность синтаксиса в руководстве, соответствующем версии вашего сервера MySQL, рядом со строкой «FROM users WHERE email =« username »И пароль =« 5111109d49bc1 ».

Я был бы очень признателен за помощь с этим.

0

Решение

Ваша проблема, кажется, заключается в следующем:

$sql = "SELECT email, role, FROM users WHERE email = '$username' AND password = '$saltedHash'"--------------------------^

У вас есть лишняя запятая , Это вызывает сбой вашего запроса SQL. Удалите это, и это работает:

$sql = "SELECT email, role FROM users WHERE email = '$username' AND password = '$saltedHash'"
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector