Проблема с логином с использованием электронной почты и пароля в PHP - PullRequest
0 голосов
/ 26 февраля 2019
<?php
$msg = "";
session_start();

if (isset($_POST['submit'])) 
{
    $con = new mysqli('localhost', 'root', '', 'sconnect');
    $email = $con->real_escape_string($_POST['email']);
    $semail=$email;
    $password = $con->real_escape_string($_POST['password']);
    $sql = $con->query("SELECT * FROM users WHERE email='$email' AND 
    password='$password';");

    if ($email == "" || $password == "")
        $msg = "Please check your inputs!";
    else if ($sql) 
    {
        $_SESSION['user'] = $semail;
        header('Location:../home.php');
    }
    else 
    {
        $msg = "Please check your inputs!";
    }
}
?>

С этим кодом я могу войти с любым вводом в поле пароля.Пожалуйста, решите проблему.

1 Ответ

0 голосов
/ 26 февраля 2019

Переменная, которую вы проверяете, равна $ sql, и она будет иметь значение true, если вы сохраните в ней какое-либо значение.В вашем случае у вас есть SQL-запрос.Так что это всегда вернет истину.Вы должны проверить количество строк, возвращаемых из запроса SELECT в вашем операторе if.

$msg = "";
session_start();
if (isset($_POST['submit'])) {
    $con = new mysqli('localhost', 'root', '', 'test');
    $email = $con->real_escape_string($_POST['email']);
    $semail = $email;
    $password = $con->real_escape_string($_POST['password']);
    $sql = $con->query("SELECT * FROM users WHERE email='$email' AND password='$password';");

    if ($email == "" || $password == "")
        $msg = "Please check your inputs!";
    else if ($sql->num_rows) {
        $_SESSION['user'] = $semail;
        header('Location:../home.php');
    } else {
        $msg = "Please check your inputs!";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...