1
resposta

[Bug] Teste da página AluraPlay

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';
    }
}
1 resposta

Carlos, você abriu essa dúvida fora do fórum do curso, então me falta bastante contexto. rsrs

Mas de qualquer forma, qual o conteúdo do seu front controller? Lá tem um session_start?

Que erro tá acontecendo? Você disse que não funciona, mas não disse o que está acontecendo.

Já tentou depurar a execução dos dois métodos pra entender onde o problema pode estar rolando?

Aguardo retorno.