2016-11-19 2 views
-3

Я относительно новичок в PHP, и я пытаюсь настроить систему входа в систему. Часть, которая вызывает у меня проблемы, пытается проверить, соответствует ли пароль, полученный из формы, соответствующему письму в базе данных MySQL (с учетом того, что адрес электронной почты также был отправлен в форме). В настоящий момент я не уверен, что делать, но это исходный код, который я собрал вместе ...Проверка пароля формы для базы данных MySQL

<html> 
<body> 
<?php 
$servername = "localhost"; 
$username = "***"; 
$password = "***"; 
$dbname = "pearsem_mystore"; 

// Create Connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check database connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT firstName, userEmail, userPass FROM users WHERE userEmail = '".$_POST["userEmail"]."'"; 
$result = $conn->query($sql); 
$row = $result->fetch_assoc(); 

if ($row["userPass"] == $_POST["userPass"]) { 
    // If true... Welcome {firstname} 
    echo "Welcome " . $row["firstName"]; 
} 
elseif ($result->num_rows == 0) { 
    echo "Incorrect email address/password"; 
} 
else { 
    echo "Error"; 
} 
$conn->close(); 

?> 
</body> 
</html> 

Заранее благодарим за вашу помощь! P.S. Я попытался объяснить ситуацию как можно лучше, но если вам нужна дополнительная информация, пожалуйста, спросите.

+0

Вы должны были бы показать форму, а также - это пароль хранится в обычный текст ? Если это так, это очень * небезопасно. – Qirel

+0

Вы можете узнать больше об аутентификации пароля здесь http://stackoverflow.com/documentation/php/530/password-hashing-functions#t=201611192242240823932. Также вы можете использовать базу данных, а не хранить учетные данные как переменные php – georoot

+1

Почему бы не проверить пароль самим mysql? 'select ... where email = ... и pass = ...'. Если этот запрос возвращает данные, то пользователь аутентифицируется, но вам необходимо дезинфицировать все входящие данные. Ваш код уязвим для SQL-инъекций. – Wizard

ответ

-1

Во-первых:

Если вы храните сырые пароль в базе данных, то вот БОЛЬШОЙ НЕ ДЕЛАТЬ.

Используйте пароль_hash, прежде чем писать в дБ. Затем password_verify при сравнении паролей с входами пользователя.

Три ссылки, чтобы помочь вам:

Смежные вопросы