JoanaAC Posted August 31, 2021 at 01:00 AM Report Share #623536 Posted August 31, 2021 at 01:00 AM Olá a todos, Pedia por favor a vossa ajuda. Estou a construir um formulário de login, mas não consigo redirecionar para uma página ao fazer login e não encontro o erro. Podem pf ajudar-me: <?php require_once 'CLASSES/usuarios.php'; $u = new Usuario; ?> <!DOCTYPE html> <html lang="PT"> <head> <title> ... </title> <meta charset="utf-8"> <meta name="description" content="página teste da web"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- Fontes --> <link rel="preconnect" href="https://fonts.gstatic.com"> <link href="https://fonts.googleapis.com/css2?family=Quicksand:wght@300;400;500;600;700&display=swap" rel="stylesheet"> <!-- CSS --> <link rel="stylesheet" href="CSS/style.css"> </head> <body> <header> </header> <main> <section> <div id="corpo-form"> <h2><strong>Entrar</strong></h2> <form method="POST"> <input type="email" name= "email" placeholder="Email"> <input type="password" name= "senha" placeholder="senha"> <input class="btnsub" type="submit" value="ACESSAR"> <a href="cadastrar.php"> Ainda não esta registado?<strong> Registe-se agora!</strong></a> </form> </div> <?php if(isset($_POST['email'])) { $email = addslashes($_POST['email']); $senha = addslashes($_POST['senha']); if(!empty($email) && !empty($senha)) { $u->conectar("", "", "", ""); if($u->msgErro == "") { if($u->logar($email,$senha)) { header("location: AreaPrivada.php"); } else { ?> <div class="msg-erro"> E-mail e/ou senha incorretos. </div> <?php } } else { ?> <div class="msg-erro"> <?php echo "Erro: ".$u->msgErro; ?> </div> <?php } } else { ?> <div class="msg-erro"> Por favor preencha todos os campos! </div> <?php } } ?> </section> </main> </body> </html> Obrigada! Link to comment Share on other sites More sharing options...
washalbano Posted August 31, 2021 at 02:11 AM Report Share #623537 Posted August 31, 2021 at 02:11 AM Olá! Já tentou com php.net/header? Link to comment Share on other sites More sharing options...
Rui Carlos Posted August 31, 2021 at 10:41 PM Report Share #623542 Posted August 31, 2021 at 10:41 PM Os headers é suposto serem a primeira coisa a ser enviada na resposta, ou seja, devem aparecer antes de começares a fazer output do HTML. Até porque no caso de um redirect, não é suposto fazeres output do HTML. É possível contornar este requisito de definir os headers no início fazendo uso do output buffer, mas não me parece grande abordagem (verdade seja dita, usar PHP em geral, e sobretudo sem uma boa framework, também não me parece boa ideia 😄). 1 Report Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
Ivo Vicente Posted September 1, 2021 at 09:17 PM Report Share #623574 Posted September 1, 2021 at 09:17 PM (edited) Como está a referir o @Rui Carlos o header deve estar no inicio do script. Deixo este link externo só sobre redirects Outra possível abordagem (visto que não usa frameworks) é simular um sistema de template (aconselhável), onde carrega a página de login usando include quando o login está ativo, ou com erro, e carrega a página seguinte (com controle de sessões se o login estiver correto). Mais sobre sessões <?php // Exemplo muito simple para demonstração do conceito // Codigo de validação.... $errors = []; //... if($isLoginValid){ include "AreaPrivada.php" }else{ // login.php terá acesso à variavel $errors include "login.php"; } Edited September 1, 2021 at 09:18 PM by Ivo Vicente Typo Feito é melhor que perfeito Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now