Perciso de ajuda urgente, Problema com tela de login

16/07/2014

Criei um forme de login como index.php, só que quando acesso sem informar nenhum dado (submit) o php é executado e dar uma mensagem de error:

Notice: Undefined index: usuario in C:\wamp\www\digidocs\src\lib\valida_login.php on line 11
Notice: Undefined index: senha in C:\wamp\www\digidocs\src\lib\valida_login.php on line 12
Warning: Invalid argument supplied for foreach() in C:\wamp\www\digidocs\src\lib\usuario.class.php on line 209

Essa mensagem de erro ocorre ao acessa index.php, ou seja ele ler o arquivo valida_login.php antes de informar qualquer dado no form e clicar em button. Como faço para que ele só execute a verificação só quando eu clicar no button?

index.php:

<?php

require_once 'src/lib/valida_login.php';
?>
<div id="corpo">
<div class="titulo_login">
Login de acesso ao sistema
</div>
<div id="logo_login">
<div id="mensagem_login">
<p>Para acessar o sistema use seu email e senha de acesso ao sistema.</p>
<center><img src="public/img/cadeado.png" alt="logo cadeado" width="60%"></center>
</div>
<div id="tela_login">
<form action="" method="POST">
<label for="email">Email:</label><br>
<input type="text" id="usuario" name="email">
<div>
<div class="senha"><label for="senha">Senha:</label></div>
<div><p><a href="#">Esqueceu sua senha?</a></p></div>
</div>
<input type="password" id="senha" name="senha">
<div id="lower">
<input type="checkbox"><label class="check" for="checkbox">Mantenha-me logado</label>
<input type="submit" value="Entrar">
</div><!--/ lower-->
</form>
</div>
</div>
</div><!--/ corpo-->

PHP

Adenesjr

Melhor resposta

17/07/2014

Posta o Valida Login, mas tenta postar ele formatado e dentro da tag code, facilita a leitura.
Mas já adianto que o que provavelmente está ocorrendo é que não está sendo tratado se a variável existe.
Aqui tem um exemplo muito bom[1]

[1]http://blog.thiagobelem.net/criando-um-sistema-de-login-com-php-e-mysql/

David Sylvestre

Responder Citar

Outras Respostas

17/07/2014

Adenesjr

Veja aí David, ele está lendo $usuario = $_POST['usuario']; e $usuario = $_POST['senha']; antes de dar o post

<?php
	// Inclui o arquivo com a classe de login
	require_once("usuario.class.php");
	
	// Instancia a classe
	$userClass = new Usuario();

	// Pega os dados vindos do formulário
	$usuario = $_POST['usuario'];
	$senha   = $_POST['senha'];

	// Se o campo "lembrar" não existir, o script funcionará normalmente
	$lembrar = (isset($_POST['lembrar']) AND !empty($_POST['lembrar']));
	 
	// Tenta logar o usuário com os dados
	if ( $userClass->logaUsuario( $usuario, $senha, $lembrar ) ) {		    	
    	        // Usuário logado com sucesso, redireciona ele para a página restrita
          	header("Location: logado.php");
         	exit;
	} else {
    	       // Não foi possível logar o usuário, exibe a mensagem de erro
    	      echo "<strong>Erro: </strong>" . $userClass->erro;
    }
?>
Responder Citar

17/07/2014

David Sylvestre

<?php
    // Inclui o arquivo com a classe de login
    require_once("usuario.class.php");
     
    // verifica se veio de um POST
    if ($_SERVER['REQUEST_METHOD'] == 'POST'){
        // Instancia a classe
        $userClass = new Usuario();
     
        // Pega os dados vindos do formulário
        // verifica se as variaveis existem
        $usuario = isset($_POST['usuario'])) ? $_POST['usuario'] : '';//$_POST['usuario'];
        $senha   = isset($_POST['senha'])) ? $_POST['senha'] : '';//$_POST['senha'];
     
        // Se o campo "lembrar" não existir, o script funcionará normalmente
        $lembrar = (isset($_POST['lembrar']) AND !empty($_POST['lembrar']));
          
        // Tenta logar o usuário com os dados
        if ( $userClass->logaUsuario( $usuario, $senha, $lembrar ) ) {               
                    // Usuário logado com sucesso, redireciona ele para a página restrita
                header("Location: logado.php");
                exit;
        } else {
                   // Não foi possível logar o usuário, exibe a mensagem de erro
                  echo "<strong>Erro: </strong>" . $userClass->erro;
        }
    }
?>


Ai nesse script tem um tratamento para ver se o formulário veio de um método POST, senão toca o barco sem realizar as rotinas de login.
Responder Citar

17/07/2014

Adenesjr

Muito obrigado, passei a noite quebrando a cabeça.
Responder Citar

17/07/2014

David Sylvestre

Muito obrigado, passei a noite quebrando a cabeça.

Faz parte da vida de desenvolvedor rsrsrs
Responder Citar

23/07/2014

William (devwilliam)

Finalizando tópico!
Responder Citar