Marco Polo Viana Postado Novembro 10, 2008 Denunciar Share Postado Novembro 10, 2008 (editado) O login não está funcionando.1 - No index.php temos o envio para o login:<form method="post" action="valida_login.php"> <p> <label>Login (E-mail)</label> <input name="email_usr" id="email_usr" type="text" size="19" /> <label>Senha</label> <input name="senha_usr" id="senha_usr" type="password" size="19" /> <br /><br> <input type="submit" class="button" value="Entrar" /> 2 - No arquivo valida_login.php a verificação: <?php require_once('cnx_dao.php'); $email_usr = $_POST["email_usr"]; $senha_usr = md5($_POST["senha_usr"]); if(empty($email_login) || empty($senha_login)) { header("Location: index.php"); } else { $sql_login = mysql_query("SELECT C_USUARI_I_USUARIO, C_USUARI_S_NOME, C_USUARI_S_EMAIL FROM C_USUARI WHERE C_USUARI_S_EMAIL='$email_usr' AND C_USUARI_S_SENHA='$senha_usr'"); $rows_login = mysql_num_rows($sql_login); if($rows_login!=0) { $mostra_usuario = mysql_fetch_array($sql_login); session_start(); $_SESSION["id_usuario"] = $mostra_usuario["C_USUARI_I_USUARIO"]; $_SESSION["nome_usuario"] = $mostra_usuario["C_USUARI_S_NOME"]; $_SESSION["email_usuario"] = $mostra_usuario["C_USUARI_S_EMAIL"]; header("Location: index2.php"); }else{ echo "<script>alert('Usuário ou Senha não reconhecidos.'); history.back() </script>"; } } @mysql_close(); ?> 3 - O arquivo index2.php contém o seguinte: <?php session_start(); require_once('cnx_dao.php'); require_once('valida_sessao.php'); ?> 4 - O arquivo valida_sessao.php incluso e,m todas as páginas contém o seguinte: <?php session_start(); require_once('cnx_dao.php'); if(IsSet($_SESSION["id_usuario"])) $id_usuario = $_SESSION["id_usuario"]; if(IsSet($_SESSION["nome_usuario"])) $nome_usuario = $_SESSION["nome_usuario"]; if(IsSet($_SESSION["email_usuario"])) $email_usuario = $_SESSION["email_usuario"]; if(!(empty($id_usuario) || empty($nome_usuario) || empty($email_usuario))) { $resultado = mysql_query("SELECT C_USUARI_I_USUARIO, C_USUARI_S_NOME, C_USUARI_S_EMAIL FROM C_USUARI WHERE C_USUARI_I_USUARIO='$id_usuario'"); if(mysql_num_rows($resultado)==1) { if($email_usuario != mysql_result($resultado,0,"C_USUARI_S_EMAIL")) { unset ($_SESSION["id_usuario"]); unset ($_SESSION["nome_usuario"]); unset ($_SESSION["email_usuario"]); echo "<script>alert('Usuário ou Senha não reconhecidos.'); </script>"; header("Location: index.php"); exit; } } else { unset ($_SESSION["id_usuario"]); unset ($_SESSION["nome_usuario"]); unset ($_SESSION["email_usuario"]); echo "<script>alert('Usuário ou Senha não reconhecidos.'); </script>"; header("Location: index.php"); exit; } } else { unset ($_SESSION["id_usuario"]); unset ($_SESSION["nome_usuario"]); unset ($_SESSION["email_usuario"]); echo "<script>alert('Usuário ou Senha não reconhecidos.'); </script>"; header("Location: index.php"); exit; } mysql_close($conn); ?>Mas o sistema não deixa efetuar login. O script de login está correto no ban co e os valores das variáveis $_SESSION também pois já testei a exibição delas.O que pode estar errado? Editado Novembro 16, 2008 por Marco Polo Viana Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Wanderson Camargo Postado Novembro 12, 2008 Denunciar Share Postado Novembro 12, 2008 Opa, tudo bom?Seguinte, eu estou sem interpretador aqui :( mas eu estava vendo o código agora e notei que você chamou a função isset() como IsSet()... Eu não me recordo bem mas php não é case sensitive?Seu php.ini está com o nível de erro para mostrar todos os erros?Abraços!Tudo de bom! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Novembro 12, 2008 Denunciar Share Postado Novembro 12, 2008 Eu não me recordo bem mas php não é case sensitive?Variáveis sim, funções/construtores de linguagem não. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Marco Polo Viana Postado Novembro 13, 2008 Autor Denunciar Share Postado Novembro 13, 2008 Alguém sugere onde está o erro? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Novembro 13, 2008 Denunciar Share Postado Novembro 13, 2008 Cara, você vai ter que debugar... no arquivo que valida os usuário verificar se está validando, quando validado se está criando as sessões... etc... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Marco Polo Viana Postado Novembro 13, 2008 Autor Denunciar Share Postado Novembro 13, 2008 A verificação de usuário faz certinho. o Problema esta na validação da sessão. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Novembro 13, 2008 Denunciar Share Postado Novembro 13, 2008 Na verdade o teu script em um lógica meio errada:1 - Você envia os dados2 - Você confere os dados e guarda nas sessões3 - Você resgata os dados das sessões e confere de novo <- ???O que todo sistema de login faz é:1 - Você envia os dados2 - Você confere os dados e guarda nas sessões3 - Verifica se as sessões existem, se existirem está logado.http://www.linhadecodigo.com.br/Artigo.aspx?id=258---E como eu disse acima, só debugando, como você tem tudo rodando ai é muito mais simples pra você achar o erro do que pra mim ficar lendo e "adivinhando" o comportamento esperado do script... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Marco Polo Viana Postado Novembro 13, 2008 Autor Denunciar Share Postado Novembro 13, 2008 (editado) Alterei os scripts e fiz da seguinte forma:1 - index.php:<form method="post" action="valida_login2.php"> <p> <label>Login (E-mail)</label> <input name="email_usr" id="email_usr" type="text" size="19" /> <label>Senha</label> <input name="senha_usr" id="senha_usr" type="password" size="19" /> <br /><br> <input type="submit" class="button" value="Entrar" /> <br /> <br /> <a href="lembrete.php">Esqueci minha senha</a></p> </form> 2 - verifica_login.php: <?php session_start(); require_once('cnx_dao.php'); $email_usr = $_POST["email_usr"]; $senha_usr = md5($_POST["senha_usr"]); $selec = "SELECT C_USUARI_I_USUARIO, C_USUARI_S_NOME, C_USUARI_S_EMAIL FROM C_USUARI WHERE C_USUARI_S_EMAIL='$email_usr' AND C_USUARI_S_SENHA='$senha_usr'"; $exec = mysql_query($selec, $conn) or die(mysql_error()); $total = mysql_num_rows($exec); if($total=="1") { $_SESSION["email_usr"] = $email_usr; $_SESSION["senha_usr"] = $senha_usr; header("Location: index2.php"); } else { echo "<script>alert('Usuário ou senha não reconhecidos.'); history.back() </script>"; } ?> 3 - index2.php: <?php session_start(); require_once('cnx_dao.php'); require_once('valida_sessao2.php'); $email = $_SESSION["email_usr"]; $senha = $_SESSION["senha_usr"]; $dados_res = mysql_query($conn, "SELECT C_USUARI_I_USUARIO, C_USUARI_S_NOME, C_USUARI_S_EMAIL FROM C_USUARI WHERE C_USUARI_S_EMAIL='$email' AND C_USUARI_S_SENHA='$senha'"); $dados = mysql_fetch_array($dados_res); $nome_usr = $dados["C_USUARI_S_NOME"]; ?> 4 - valida_sessao.php: <?php session_start(); if(($_SESSION["email_usr"]=="") OR ($_SESSION["senha_usr"]=="")) { echo "<script>alert('Usuário não autenticado.'); history.back()</script>"; } ?>E não loga, ele entra na validação da sessão e retorna ao login. Tem solução um simles login com validação de sessão em páginas restritas? Editado Novembro 13, 2008 por Marco Polo Viana Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Wanderson Camargo Postado Novembro 13, 2008 Denunciar Share Postado Novembro 13, 2008 Bom... Lá vamos nós...Trabalho com $_SESSION é muito simples. Já tentaste no Tio Google?http://www.google.com.br/search?hl=pt-BR&a...oogle&meta= Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Marco Polo Viana Postado Novembro 13, 2008 Autor Denunciar Share Postado Novembro 13, 2008 Realmente lendo vi que é muito simples mas o esquema tá todo postado acima e refiz simplificando mais ainda e não loga. E ninguém postou a correção da forma mais simplificada. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Wanderson Camargo Postado Novembro 14, 2008 Denunciar Share Postado Novembro 14, 2008 Voltei!Como diria o esquartejador: vamos por partes! Lendo teu post, por que o form envia para o valida_login2.php e você não postou ele aqui? Segundo, tua SQL, está sendo "montada" corretamente? Se ela possuir erros ou não retornar nenhuma linha, teu código vai voltar mesmo. Terceiro, falta o valida_sessao2.php... cnx_dao.php...Tudo pode estar errado!Usa isso (nem estou acreditando que fiz ¬¬index.php<form method="post" action="login.php"> Usuário<br/> <input type="text" name="usuario" value=""/><br/> Senha<br/> <input type="password" name="senha" value=""/><br/> <input type="submit" value="Login!"/></form>login.php<?php $usuario = $_POST['usuario']; $senha = $_POST['senha']; // $table = Uma select do banco, que retorne $table['usuario'] e $table['senha'] // Aqui eu forcei olha só: $table = array(); $table['usuario'] = "admin"; $table['senha'] = "12345"; // Fim da forçada if($usuario == $table['usuario'] && $senha == $table['senha']) { session_start(); $_SESSION['usuario'] = $usuario; $_SESSION['senha'] = $senha; header("Location: principal.php"); } else header("Location: index.php");?>principal.php<?php session_start(); if(!isset($_SESSION['usuario'])) header("Location: logout.php");?>Olá <?=$_SESSION['usuario']?>! <a href="logout.php"/>Logout!</a>logout.php<?php session_start(); $_SESSION = array(); unset($_SESSION); session_destroy(); header("Location: index.php");?>:ninja: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Marco Polo Viana Postado Novembro 14, 2008 Autor Denunciar Share Postado Novembro 14, 2008 O valida_sessao2.php é esse que está aí, esqueci de por o 2 nofinal. SQL está certinho pois quando executo a query no banco com osvalores retorna certinho e quando dou echo nas $_SESSION também retorna os valores certinhos. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Wanderson Camargo Postado Novembro 14, 2008 Denunciar Share Postado Novembro 14, 2008 Opa!Eu vou te pedir, debugue seu código. Eu não sei o que está acontecendo. Dicas pára debugar:Utilize a função print_r($_SESSION) para visualizar o conteúdo da array $_SESSION;Utilize a função var_dump($obj) para verificar as variáveis e objetos afins; ouUtiliza o login que eu fiz pra ti =)Calro, ele tem muitos erros pois fiz na correria...Abraços! :mellow: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Marco Polo Viana Postado Novembro 14, 2008 Autor Denunciar Share Postado Novembro 14, 2008 (editado) Acho q consegui algo para ajudarem:Fiz o código abaixo:~ <?php session_start(); require_once('cnx_dao.php'); $email_usr = $_POST["email_usr"]; $senha_usr = md5($_POST["senha_usr"]); $selec = "SELECT C_USUARI_I_USUARIO, C_USUARI_S_NOME, C_USUARI_S_EMAIL FROM C_USUARI WHERE C_USUARI_S_EMAIL='$email_usr' AND C_USUARI_S_SENHA='$senha_usr'"; $exec = mysql_query($selec, $conn) or die(mysql_error()); $total = mysql_num_rows($exec); if($total=="1") { $_SESSION["email_usr"] = $email_usr; $_SESSION["senha_usr"] = $senha_usr; header("Location: debuga.php"); } else { echo "<script>alert('Usuário ou senha não reconhecidos.'); history.back() </script>"; } ?> e no debuga.php o seguinte: <?php session_start(); echo $_SESSION["email_usr"]; echo $_SESSION["senha_usr"]; ?> E traz branco. Para saber se os dados em $_SESSION estão sendo gerados, coloquei no if : echo $_SESSION["email_usr"]; echo $_SESSION["senha_usr"];Como entrou no if e exibiu os dados da sessão o SQL tá certinho, mas não sei porque não leva os dados para frente em debuga.php. Acho q ajudei a me ajudarem. Editado Novembro 14, 2008 por Marco Polo Viana Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Wanderson Camargo Postado Novembro 14, 2008 Denunciar Share Postado Novembro 14, 2008 Ajuda para debugar:<? error_reporting(E_ALL); ?>Isso aumenta o teu nível de erro; ou seja, aparece até erros de não inicialização de arrays.http://br2.php.net/manual/pt_BR/function.error-reporting.phpAbraços! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Marco Polo Viana Postado Novembro 14, 2008 Autor Denunciar Share Postado Novembro 14, 2008 Bom, está caindo no if e mostrando sessão vazia conforme teste abaixo.Valida sessão:<?php session_start(); if( !isset($_SESSION["email_usr"]) && !isset($_SESSION["senha_usr"]) ) { echo "Sessão vazia"; } else { echo $_SESSION["email_usr"]; echo $_SESSION["senha_usr"]; } ?> Sendo que na página de login a sessão existe e é mostrada: <?php session_start(); require_once('cnx_dao.php'); $email_usr = $_POST["email_usr"]; $senha_usr = md5($_POST["senha_usr"]); $selec = "SELECT C_USUARI_I_USUARIO, C_USUARI_S_NOME, C_USUARI_S_EMAIL FROM C_USUARI WHERE C_USUARI_S_EMAIL='$email_usr' AND C_USUARI_S_SENHA='$senha_usr'"; $exec = mysql_query($selec, $conn) or die(mysql_error()); $total = mysql_num_rows($exec); if($total=="1") { $_SESSION["email_usr"] = $email_usr; $_SESSION["senha_usr"] = $senha_usr; echo $_SESSION["email_usr"]; echo $_SESSION["senha_usr"]; } else { echo "Usuário ou senha não reconhecido."; } ?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Marco Polo Viana Postado Novembro 16, 2008 Autor Denunciar Share Postado Novembro 16, 2008 Pessoal, Bastei parar o IIS e instalar o APACHE que a sessão passou a andar entre as páginas. Não sei porque o IIS estava zerando o conteúdo das sessões ou onde configura isso no IIS. Mas como com o apache resolveu, vamos em frente... inclusive com o apache deu problemas de case sensitive entre as tabelas no ysql e campos , sendo que não alterei o collation.Abs a todos e obrigado pela força. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Wanderson Camargo Postado Novembro 17, 2008 Denunciar Share Postado Novembro 17, 2008 IIS, por que será que deu erro? =P :rolleyes: Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Marco Polo Viana
O login não está funcionando.
1 - No index.php temos o envio para o login:
2 - No arquivo valida_login.php a verificação: 3 - O arquivo index2.php contém o seguinte: 4 - O arquivo valida_sessao.php incluso e,m todas as páginas contém o seguinte:Mas o sistema não deixa efetuar login. O script de login está correto no ban co e os valores das variáveis $_SESSION também pois já testei a exibição delas.
O que pode estar errado?
Editado por Marco Polo VianaLink para o comentário
Compartilhar em outros sites
17 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.