Я новичок в 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;
}
}
}