Perciso de ajuda urgente, Problema com tela de login
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-->
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-->
Adenes Junior
Curtidas 0
Melhor post
David Sylvestre
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/
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/
GOSTEI 1
Mais Respostas
Adenes Junior
16/07/2014
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;
}
?>
GOSTEI 0
David Sylvestre
16/07/2014
<?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.
GOSTEI 1
Adenes Junior
16/07/2014
Muito obrigado, passei a noite quebrando a cabeça.
GOSTEI 0
David Sylvestre
16/07/2014
Muito obrigado, passei a noite quebrando a cabeça.
Faz parte da vida de desenvolvedor rsrsrs
GOSTEI 1
William
16/07/2014
Finalizando tópico!
GOSTEI 1