Как исправить мою проблему с логином? - PullRequest
0 голосов
/ 07 июня 2018

Я успешно создал форму регистрации, и она работает нормально.Но моя система входа в систему показывает ошибку, и я не могу понять это.Всякий раз, когда я использую для входа, он показывает логин == пустым в URL, даже когда я использую точно такой же пользователя и пароль.

<?php
session_start();
include 'conn.php';
 if (isset($_POST['submit'])) {

      $uid=mysqli_real_escape_string($conn,'$_POST["firstname"]');
      $pwd=mysqli_real_escape_string($conn,'$_POST["password"]');
      if ($uid==""||$pwd=="") {
         header("Location:../triallogin.php?login=empty");
            exit();
      } else{
        $sql="SELECT * FROM comments WHERE first='$uid'";
        $result=mysqli_query($conn,$sql);
        $resultcheck=mysqli_num_rows($result);
         if ($resultcheck<1) {
            header("Location:../triallogin.php?login=empty");
            exit();
         } else{
            if ($row=mysqli_fetch_assoc($result)) {
                //De-hasing of password
                $hashedpassowrd=password_verify($pwd,$row['pwd']);
                if ($hashedpassowrd==false) {
                    header("Location:../triallogin?login=wrongpassword");
                } elseif ($hashedpassowrd==true) {
                    $_SESSION['first']=$row['first'];
                    $_SESSION['last']=$row['last'];
                    header('Location:../triallogin.php?login=success');
                    exit();
                }
            }


         }  
      }
 } else {
    header('Location:../triallogin.php?login=hit');
    exit();
 }

1 Ответ

0 голосов
/ 07 июня 2018

Три вещи.

Вы поместили переменные сообщения в виде строки:

$uid=mysqli_real_escape_string($conn,'$_POST["firstname"]');
$pwd=mysqli_real_escape_string($conn,'$_POST["password"]');

Измените это на:

$uid = mysqli_real_escape_string($conn, $_POST["firstname"]);
$pwd = mysqli_real_escape_string($conn, $_POST["password"]);

Во-вторых, вы пытаетесьполучить данные для входа в систему из таблицы comments?Это не может быть правдой.

$sql="SELECT * FROM comments WHERE first='$uid'";

Возможно, измените это на таблицу users или как вы ее называете.

Наконец, ваш SQL уязвим для атаки SQL-инъекций.Обходной путь - использовать подготовленный оператор и связать параметры.

Я рекомендую использовать PDO поверх mysqli, это, вероятно, одна из лучших статей, объясняющих почему, прочитайте!https://phpdelusions.net/pdo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...