PHP скрипт не распознает мой запрос MySQL - PullRequest
0 голосов
/ 06 ноября 2018

Я новичок в php и mysql и начал кодировать простую социальную сеть. Поэтому я сейчас работаю над своей страницей login.php, которая, похоже, не содержит ошибок, но она не работает должным образом, и я предполагаю, что это потому, что запрос не распознается как оператор. Т.е. «пароль» не должен выделяться в качестве ключевого слова, но это поле в базе данных. Я также знаю, что я не рассматривал инъекции. Когда я запускаю это в браузере, ошибок нет, но он возвращает «Пользователь не зарегистрирован», даже если пользователь находится в базе данных. Любое понимание было бы здорово, спасибо!

Вот мой код:

<?php
include('classes/DB.php');
if (isset($_POST['login'])) {
    $username = $_POST['username'];
    $password = $_POST['password'];
    if (DB::query('SELECT username FROM users WHERE username=:username', 
      array(':username'=>$username))) {
            if (password_verify($password, DB::query("SELECT password FROM 
      users WHERE username=:username", array(':username'=>$username))[0] 
      ['password'])) {
                    echo 'Logged in!';
            } else {
                    echo 'Incorrect Password!';
            }
    } else {
            echo 'User not registered!';
    }
}

Вот мой класс DB.php:

 <?php
  class DB {
    private static function connect() {
            $pdo = new PDO('mysql:host=127.0.0.1;dbname=SocialNetwork;charset=utf8', 'root', '');
            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            return $pdo;
    }
    public static function query($query, $params = array()) {
            $statement = self::connect()->prepare($query);
            $statement->execute($params);
            if (explode(' ', $query)[0] == 'SELECT') {
            $data = $statement->fetchAll();
            return $data;
            }
    }
 }

1 Ответ

0 голосов
/ 06 ноября 2018
<?php
include('classes/DB.php');
if (isset($_POST['login'])) {
    $username = $_POST['username'];
    $password = $_POST['password'];
    if (DB::query('SELECT username FROM users WHERE username=:username', 
      array('username'=>$username))) {
            if (password_verify($password, DB::query("SELECT password FROM 
      users WHERE username=:username", array('username'=>$username))[0] 
      ['password'])) {
                    echo 'Logged in!';
            } else {
                    echo 'Incorrect Password!';
            }
    } else {
            echo 'User not registered!';
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...