Ir para conteúdo
Fórum Script Brasil
  • 0

Problemas com sessão


Marco Polo Viana

Pergunta

Prezados,

Estou com um problema na sessão, pis quando cai na parte de verificar se ela existe redireciona de novo pro login.. conforme sequencia abaixo:

1 - Formulario que transmitirá login e senha.

<input name="email_usr" id="email_usr" type="text" size="19" />
<input name="senha_usr" id="senha_usr"  type="password" size="19" />
2 - Aqui starto a sessão e recebo os parâmetros.
session_start();
require_once('cnx_dao.php');
$email_login = $_POST["email_usr"];
$senha_login = md5($_POST["senha_usr"]);
3 - Aqui acho q começa o problema. Primeiro se os campos estiverem vazios ele retorna. Depois as varia veis recebem a consulta a qtdede linhas da consulta. Na sequencia, se houver linha no resultset armazena o resultdo da consulta, cria as variaveis de sessão e redireciona à página. Caso contrário retorna ao login.
if(empty($email_login) || empty($senha_login))
{
header("Location: index.php");
} else {
$sql_login  = mysql_query("SELECT * FROM C_USUARI WHERE C_USUARI_S_EMAIL='$email_login' AND C_USUARI_S_SENHA='$senha_login'");
$rows_login = mysql_num_rows($sql_login);

if($rows_login!=0)
{
$mostra_usuario = mysql_fetch_array($sql_login);
$_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>";
}
}
4 - Aqui temos a verificacao requerida na pagina pós login, que checa a sessão. e como está retornando acho q o erro está aqui.
<?php
session_start(); 
if(!isset($_SESSION["id_usuario"]) and !isset($_SESSION["nome_usuario"])){
  header("location: index.php");
}
?>
5 - Aqui seria a página restrita q deveria ser redirecionada. Mas não chega nela.
<?php 
session_start();
require_once('cnx_dao.php');
require_once('sessao.php');
$nome_usr =session_register('nome_usuario');
?>

Se puderem me dar uma ajuda será bem-vinda.

Grato

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

é pode ser no item 3 ou 4

coloque echo $var para saber se realmente esta recebendo os valores, se esta localizando no banco de dados..

no item 2 coloque:

session_start();
require_once('cnx_dao.php');
$email_login = $_POST["email_usr"];
$senha_login = md5($_POST["senha_usr"]);
echo "e-mail = $email   Senha md5 = $senha_login  Senha normal = ".$_POST["senha_usr"];

exit;
compare os resultados com o que foi digitato e com o que existe na tabela, veja se esta realmente correto. se estiver retire o echo e o exit e va para o item 3 faça o mesmo
if($rows_login!=0)
{
$mostra_usuario = mysql_fetch_array($sql_login);
$_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"];

echo "usuario : ". $mostra_usuario["C_USUARI_I_USUARIO"];
echo "nome: ".$mostra_usuario["C_USUARI_S_NOME"];
echo e-mail : ".mostra_usuario["C_USUARI_S_EMAIL"]
exit;
//header("Location: index2.php");
}
 else
{ 
echo "Erro não localizado";
exit;
//echo "<script>alert('Usuário ou Senha não reconhecidos.'); history.back()</script>";
}
Retornando os resultados Ok remova os comentarios // e os exit; e echo colocados e va para o item 4
session_start();
echo "Sessão id = ".$_SESSION["id_usuario"])." Sessão usuario : ".($_SESSION["nome_usuario"];
exit;
/*if(!isset($_SESSION["id_usuario"]) and !isset($_SESSION["nome_usuario"])){
  header("location: index.php");
}*/

ai ve em que ponto esta falhando..

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --marcopoloviana --
é pode ser no item 3 ou 4

coloque echo $var para saber se realmente esta recebendo os valores, se esta localizando no banco de dados..

no item 2 coloque:

session_start();
require_once('cnx_dao.php');
$email_login = $_POST["email_usr"];
$senha_login = md5($_POST["senha_usr"]);
echo "e-mail = $email   Senha md5 = $senha_login  Senha normal = ".$_POST["senha_usr"];

exit;
compare os resultados com o que foi digitato e com o que existe na tabela, veja se esta realmente correto. se estiver retire o echo e o exit e va para o item 3 faça o mesmo
if($rows_login!=0)
{
$mostra_usuario = mysql_fetch_array($sql_login);
$_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"];

echo "usuario : ". $mostra_usuario["C_USUARI_I_USUARIO"];
echo "nome: ".$mostra_usuario["C_USUARI_S_NOME"];
echo e-mail : ".mostra_usuario["C_USUARI_S_EMAIL"]
exit;
//header("Location: index2.php");
}
 else
{ 
echo "Erro não localizado";
exit;
//echo "&lt;script>alert('Usuário ou Senha não reconhecidos.'); history.back()</script>";
}
Retornando os resultados Ok remova os comentarios // e os exit; e echo colocados e va para o item 4
session_start();
echo "Sessão id = ".$_SESSION["id_usuario"])." Sessão usuario : ".($_SESSION["nome_usuario"];
exit;
/*if(!isset($_SESSION["id_usuario"]) and !isset($_SESSION["nome_usuario"])){
  header("location: index.php");
}*/

ai ve em que ponto esta falhando..

Só para desencargo de consciencia, se coloco no login email ou senha diferente do cadastro ele retorna o teste de login conforme consulta no banco, ento ele tah indo no banco...quando coloco mesmo login e senha é que cai na falha da sessão

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Marco Polo Viana
e voce fez o teste ai??

chegou a comparar o que o sistema mostra nome e senha encriptografada com o que voce tem no banco de dados?

visualmente estão batendo?

Seguinte:

Na primeira verificação ok.

Na segunda deu erro interno, então fui liberando os echo linha por linha e não exibe o valor de nenhum deles e cai no "Erro não localizado"!.

Chegando na linha echo "e-mail: ".mostra_usuario["C_USUARI_S_EMAIL"]; e liberando só ela pra exibir dá o erro interno. Acontece que não to vendo erro de sintaxe aqui. No banco executo a query e ela retorna beleza...

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Marco Polo Viana
e voce fez o teste ai??

chegou a comparar o que o sistema mostra nome e senha encriptografada com o que voce tem no banco de dados?

visualmente estão batendo?

Seguinte:

Na primeira verificação ok.

Na segunda deu erro interno, então fui liberando os echo linha por linha e não exibe o valor de nenhum deles e cai no "Erro não localizado"!.

Chegando na linha echo "e-mail: ".mostra_usuario["C_USUARI_S_EMAIL"]; e liberando só ela pra exibir dá o erro interno. Acontece que não to vendo erro de sintaxe aqui. No banco executo a query e ela retorna beleza...

Apenas corrigindo:

Na segunda verificação só ocorre erro interno Http 500 quando libero a linha:

echo "e-mail: ".mostra_usuario["C_USUARI_S_EMAIL"];

Se comentar ela e exibir as outras dá certinho. Mas a query no banco executa e traz os valores.

Link para o comentário
Compartilhar em outros sites

  • 0

coloque de novo o codigo...

deve estar faltando um ; em algum lugar..

um que vi que esta sem

echo e-mail : ".mostra_usuario["C_USUARI_S_EMAIL"]

deveria estar

echo e-mail : ".mostra_usuario["C_USUARI_S_EMAIL"];

veja se no servidor tem o error_log se tiver veja as ultimas linhas pode dar uma luz para resolver

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Marco Polo Viana
é pode ser no item 3 ou 4

coloque echo $var para saber se realmente esta recebendo os valores, se esta localizando no banco de dados..

no item 2 coloque:

session_start();
require_once('cnx_dao.php');
$email_login = $_POST["email_usr"];
$senha_login = md5($_POST["senha_usr"]);
echo "e-mail = $email   Senha md5 = $senha_login  Senha normal = ".$_POST["senha_usr"];

exit;
compare os resultados com o que foi digitato e com o que existe na tabela, veja se esta realmente correto. se estiver retire o echo e o exit e va para o item 3 faça o mesmo
if($rows_login!=0)
{
$mostra_usuario = mysql_fetch_array($sql_login);
$_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"];

echo "usuario : ". $mostra_usuario["C_USUARI_I_USUARIO"];
echo "nome: ".$mostra_usuario["C_USUARI_S_NOME"];
echo e-mail : ".mostra_usuario["C_USUARI_S_EMAIL"]
exit;
//header("Location: index2.php");
}
 else
{ 
echo "Erro não localizado";
exit;
//echo "&lt;script>alert('Usuário ou Senha não reconhecidos.'); history.back()</script>";
}
Retornando os resultados Ok remova os comentarios // e os exit; e echo colocados e va para o item 4
session_start();
echo "Sessão id = ".$_SESSION["id_usuario"])." Sessão usuario : ".($_SESSION["nome_usuario"];
exit;
/*if(!isset($_SESSION["id_usuario"]) and !isset($_SESSION["nome_usuario"])){
  header("location: index.php");
}*/

ai ve em que ponto esta falhando..

Só para concluir os teste fiz a ultima verificação, onde deveria recebr a sessão pois tirando a linha do email ele trouxe os valores. Acontece que dá erro interno.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Marco Polo Viana
coloque de novo o codigo...

deve estar faltando um ; em algum lugar..

um que vi que esta sem

echo e-mail : ".mostra_usuario["C_USUARI_S_EMAIL"]

deveria estar

echo e-mail : ".mostra_usuario["C_USUARI_S_EMAIL"];

veja se no servidor tem o error_log se tiver veja as ultimas linhas pode dar uma luz para resolver

jissa

Todos estão com ; O que faltava foi an sua sugestão de teste mas já havia colocado. A sintaxe está correta. Como segue abaixo:

<input name="email_usr" id="email_usr" type="text" size="19" />
<input name="senha_usr" id="senha_usr"  type="password" size="19" />
Depois
session_start();
require_once('cnx_dao.php');
$email_login = $_POST["email_usr"];
$senha_login = md5($_POST["senha_usr"]);

$sql_login  = mysql_query("SELECT * FROM C_USUARI WHERE C_USUARI_S_EMAIL='$email_login' AND C_USUARI_S_SENHA='$senha_login'");
$rows_login = mysql_num_rows($sql_login);

if($rows_login!=0)
{
$mostra_usuario = mysql_fetch_array($sql_login);
$_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"];

echo "usuario: ". $mostra_usuario["C_USUARI_I_USUARIO"];
echo "nome: ".$mostra_usuario["C_USUARI_S_NOME"];
echo "e-mail: ".mostra_usuario["C_USUARI_S_EMAIL"];
exit;
}
else  
{ echo "Erro não localizado"; 
     exit;
}
}
E finalmente
if($_SESSION["id_usuario"] == "") and ($_SESSION["nome_usuario"] == ""){
$nome = $_SESSION["nome_usuario"]; 
$senha = $_SESSION["id_usuario"];
echo "sessoes vazias  nome= ".$nome."  senha= ".$senha;

Tem solução?

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...