@antony12

Не проходит авторизация?

Доброе утро, пытаюсь сделать "лёгкое окошко авторизации", но не получаю никакого ответа от эхо, пароль в bcrypt уже, не пишет абсолютно ничего друзья, в вардампом и постом, передается всё идеально, а не обрабатывается бывает пролетает раз через раз ошибка
Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in D:\OpenServer\domains\localhost\login.php:23 Stack trace: #0 D:\OpenServer\domains\localhost\login.php(23): PDOStatement->execute() #1 {main} thrown in D:\OpenServer\domains\localhost\login.php on line 23

на строку $query->execute(); Мне туда заглушку поставить нужно?
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['login'])){

$login = trim($_POST['login']);
$pass = trim($_POST['pass']);

$query = $dbh->prepare("SELECT * FROM login WHERE login=:?");
$query->bindParam("login", $login, PDO::PARAM_STR);
$query->execute();
$result = $query->fetch(PDO::FETCH_ASSOC);
if (password_verify($pass, $result['pass'])) {
  echo 'успех';
} else {
  echo 'нет успеха';
} 

}


  // echo '<pre>';
  // var_dump($_POST);
   

echo '<form method="POST" action="">';
echo 'Cost: <input type="text" name="login"><br />';
echo 'Cost: <input type="text" name="pass"><br />';

echo '<input name="login" type="submit" value="sign"></form>';

пароль хеширую так:
$password_hash = password_hash($pass, PASSWORD_BCRYPT);
  • Вопрос задан
  • 94 просмотра
Пригласить эксперта
Ответы на вопрос 2
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Прочитайте внимательно про биндинг, а точнее про именованные и неименованные псевдопеременные, а то у вас каша получилась.
Ответ написан
Комментировать
KKOOLL
@KKOOLL
full stack-developer
Если у тебя название таблицы login, то нужен такой запрос
SELECT * FROM `login` WHERE `login`.`login`=:login
$query = $dbh->prepare("SELECT * FROM `ИМЯ ТАБЛИЦЫ` WHERE `login`=:login");
$query->execute(['login'=>$login]);
$result = $query->fetch(PDO::FETCH_ASSOC);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы