2016-02-29 1 views
0

Итак, я довольно новичок в 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 'AND password =' ​​5111109d49bc1 'в строке 1.

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

+0

Вы можете добавить текст сообщения? Это поможет найти решение вашей проблемы. – AlexVogel

+0

Возможно, добавьте сообщение об ошибке, которое вы получите, это, скорее всего, из-за вашей соли, которая могла вызвать синтаксическую ошибку SQL. – Panda

ответ

2

Ваша проблема, как представляется, это:

$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'" 
+0

Это действительно проблема, не знаю, как мне это не удалось. Но спасибо вам большое! :) –

+0

'не знаю, как я этого не заметил. Просто: у вас нет видимых ошибок или вы не читаете журнал после получения ошибки. Правильный способ решения проблемы - сначала посмотреть, в чем проблема. –

+0

У меня действительно нет видимых ошибок. Но, как я уже сказал, я довольно новичок в PHP, поэтому отладка все еще беспорядок для меня. –