Задать вопрос
@PAWN----1

Почему $array=$sql->fetch(PDO::FETCH_ASSOC). Возвращает false не зависимо от того что я написал в форму?

//Файл login.php


<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Вход в админку</title>
</head>
<body>
	<h2 style="text-align:center;padding-top:100px">Вход в административную панель</h2>

	<form action="admin/admin.php" method="post" style="text-align:center;padding-top:50px">
	<div class="form-group">
		<lable>Логин </lable>
	<input type="text" placeholder="Введите логин" name="login">
    </div>

    <div class="form-group">
    	<lable>Пароль</lable>
	<input type="text" placeholder="Введите пароль" name="password">
    </div>
    <button type="submit" class="btn btn-primary">Войти</button>
</form>
	
</body>
</html>




 Файл connect.php
<?php
$user = "root";
$password ="";
$host = "localhost";
$db = "project";
$dbh = 'mysql:host='.$host.';dbname='.$db.';charset=utf8mb4';
$pdo=new PDO($dbh,$user,$password);
?>


//Файл admin.php
<?php require_once '../functions/connect.php';?>
<?php
$login = $_POST['login'];
$password = $_POST['password'];

$sql = $pdo->prepare("SELECT id FROM user WHERE login=:login AND password=:password");
$sql->execute(array('login' => $login, 'password' => $password));
$array=$sql->fetch(PDO::FETCH_ASSOC);
var_dump($array);
?>
  • Вопрос задан
  • 100 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Если версия PHP ниже 8.0, то добавьте в вызов конструктора опцию PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION. Если версия 8.0 и выше или после добавления опции ошибок не показывает, то значит запрос ничего не находит в базе.
Ответ написан
delphinpro
@delphinpro Куратор тега PHP
frontend developer
У вас как процедура регистрации выгляит? Вы что, прямо вот так храните в базе данных пароль в открытом виде?
Или все-таки храните хэш от пароля, сгенерированный функцией password_hash?
Если храните хэш, то зачем вы пытаетесь найти в базе пароль в том виде, как он был введен в форму?

По поводу принципов регистрации/авторизации вот здесь ознакомьтесь
https://habr.com/ru/articles/665602/
Специально для новичков писал.
Ответ написан
Комментировать
@PAWN----1 Автор вопроса
Когда я стираю : в запросе к базе данных то выводит id 1 вне зависимости от того что я написал в форму
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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