Durante o curso PHP na Web, eu estava testando o login para tentar ir na próxima página e ver a listagem dos vídeos da página AluraPlay. Mas está dando um erro que não está deixando entrar quando eu digito o meu email e senha correta. Pórem, não está deixando e vou deixar o código para verificar a solução:
<?php
declare(strict_types=1);
namespace Alura\Mvc\Controller;
class LoginController implements Controller
{
private \PDO $pdo;
public function __construct()
{
$dbPath = __DIR__ . '/../../banco.sqlite';
$this->pdo = new \PDO("sqlite:$dbPath");
}
public function processaRequisicao(): void
{
$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
$password = filter_input(INPUT_POST, 'password');
$sql = 'SELECT * FROM users WHERE email = ?';
$statement = $this->pdo->prepare($sql);
$statement->bindValue(1, $email);
$statement->execute();
$userData = $statement->fetch(\PDO::FETCH_ASSOC);
$correctPassword = password_verify($password, $userData['password'] ?? '');
if ($correctPassword) {
$_SESSION['logado'] = true;
header('Location: /');
} else {
header('Location: /login?sucesso=0');
}
}
}
<?php
declare(strict_types=1);
namespace Alura\Mvc\Controller;
class LoginFormController implements Controller
{
public function processaRequisicao(): void
{
if (array_key_exists('logado', $_SESSION) && $_SESSION['logado'] === true) {
header('Location: /');
return;
}
require_once __DIR__ . '/../../views/login-form.php';
}
}