Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 25 postagens
Mais de 25 postagens
Tópico Autor
Mensagens: 36

Erro no login

10-11-2008 22:57

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&nbsp;(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_login = $_POST["email_usr"]; $senha_login = 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_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_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 tbm pois já testei a exibição delas.
O que pode estar errado?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17637
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Erro no login

10-11-2008 23:05

Seu input não tem value, pode ser isso
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 25 postagens
Mais de 25 postagens
Tópico Autor
Mensagens: 36

Erro no login

11-11-2008 12:06

Que input? Não há input acima, apenas verificação para login, ou seja, apenas select...
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17637
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Erro no login

11-11-2008 12:41

<input name="email_usr" id="email_usr" type="text" size="19" />
<input name="senha_usr" id="senha_usr" type="password" size="19" />

Daí que sai os valores que vão para o SELECT, se não há um value definido ( value="" ) nenhum valor é passado.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 25 postagens
Mais de 25 postagens
Tópico Autor
Mensagens: 36

Erro no login

11-11-2008 15:18

O value é o valor que input assume, se eu setar por padrão ele fica aparecendo dentro do input. O valor é passado qndo se preenche o campo via get ou post para a variável que recebe o id do input. id="email_usr" receberá o valor digitado no input e passa a variável $email_usr:

$email_usr = $_POST["email_usr"];
$senha_usr = md5($_POST["senha_usr"]);

Logo o valeu não será preenchido por padrão. O problema não está aí. Deve estar na sessão.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17637
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Erro no login

11-11-2008 16:37

Agora que tive analisando seu script, no arquivo valida_sessao.php todas as condições destroem as sessions criadas

Veja se não é isso

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;

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 25 postagens
Mais de 25 postagens
Tópico Autor
Mensagens: 36

Erro no login

11-11-2008 17:49

Ele só mata a sessão se o if for atendido. Veja:
1 - Se as variáves de sessão não estiverem vazias entra no if, se não cai no else e mata a sessão.
if(!(empty($id_usuario) || empty($nome_usuario) || empty($email_usuario)))

2 - Após verificar que não estão vazias executa a query e verifica se há resultado, se não cai no elso e mata a sessão:
if(mysql_num_rows($resultado)==1)

3 - Se o resultado for diferente do verificado ele mata a sessão
if($email_usuario != mysql_result($resultado,0,"C_USUARI_S_EMAIL"))

Ou seja ele não deve entrar no if, pois se entrar em qualquer if mata a sessão. Acho que o problema não está aí não.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17637
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Erro no login

11-11-2008 18:46

Testei uma parte do seu script com um bd que tenho aqui, um dos erros que ví foi no login.php, o session_start() deve estar na primeira linha do arquivo, e não no meio.

Ai testei o login e ví que você fez o seguinte

$_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"];

Ai você já não tem os dados da session.

Outra coisa que fiz foi trocar o seu select por um que costumo usar

$sql_login = mysql_query("SELECT ...");
$rows_login = mysql_num_rows($sql_login);

Por

$selec = "SELECT ...";
$exec = mysql_query($selec, $conexao) or die(mysql_error());
$total = mysql_num_rows($exec);

No caso o $exec é usado para rodar o SELECT.

Ai, salvando os dados da session dentro do while consegui logar sem problemas.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 25 postagens
Mais de 25 postagens
Tópico Autor
Mensagens: 36

Erro no login

11-11-2008 23:28

Como vc resolveu a questão de não registrar as $_SESSION? pq a forma de registrar a variável de sessão era essa... o que estava errado? não entendi.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17637
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Erro no login

11-11-2008 23:36

Para registrar você só precisa do session_start() no começo e setar o valor para a session, no caso fiz isso dentro do while.

Supondo que você vai usar a base de script que usei

$selec = "SELECT ...";
$exec = mysql_query($selec, $conexao) or die(mysql_error());
$total = mysql_num_rows($exec);

O while ficaria

while($campos=mysql_fetch_array($exec)) {
extract($campos);
$_SESSION["id_usuario"] = "$C_USUARI_I_USUARIO";
// continua as demais sessions...
} // fecha o while
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 25 postagens
Mais de 25 postagens
Tópico Autor
Mensagens: 36

Erro no login

12-11-2008 12:32

Tentei rodar assim e tbm não passa no login, sendo que testei os valores da variáveis e retorna certinho e o select no banco tbm.
<?php require_once('cnx_dao.php'); // obtém os valores digitados $email_usr = $_POST["email_usr"]; $senha_usr = md5($_POST["senha_usr"]); // acesso ao banco de 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_usr' AND C_USUARI_S_SENHA='$senha_usr'"); $linhas = mysql_num_rows($res); // testa se a consulta retornou algum registro if($linhas==0) { echo "<script>alert('Usuário ou Senha não reconhecidos.'); history.back() </script>"; } else { setcookie("email_usr", $email_usr); setcookie("senha_usr", $senha_usr); // direciona para a página inicial dos usuários cadastrados header ("Location: index2.php"); } mysql_close($con); ?>

Não estou conseguindo avançar. :star
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17637
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Erro no login

12-11-2008 13:06

Porque não aplicou o tempo no setcookie?

setcookie("nome do cookie", "valor do cookie", time()+3600); // 3600 equivale a uma hora de duração
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 25 postagens
Mais de 25 postagens
Tópico Autor
Mensagens: 36

Erro no login

12-11-2008 13:20

Por quê não é obrigatório setar o tempo. Apenas fazer o login, mas tbm não loga.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17637
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Erro no login

12-11-2008 14:01

O link abaixo tem um sistema de login pronto, pode dar uma idéia

http://www.codigosnaweb.com/forum/Siste ... 3_503.html
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 25 postagens
Mais de 25 postagens
Tópico Autor
Mensagens: 36

Erro no login

13-11-2008 17:18

Alterei os scripts e fiz da seguinte forma:

1 - index.php:
<form method="post" action="valida_login2.php"> <p> <label>Login&nbsp;(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?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17637
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Erro no login

13-11-2008 18:09

Chegou a testar todo o exemplo do link sem fazer alterações? Funcionou?
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 25 postagens
Mais de 25 postagens
Tópico Autor
Mensagens: 36

Erro no login

13-11-2008 18:12

Peguei a parte de verificação de login e sessão e simplifiquei o meu e pode ver que está bem simples, mas no novo esquema que postei o que tá errado?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17637
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Erro no login

13-11-2008 18:21

Para mostrar os dados você tem que usar o while

$dados = mysql_fetch_array($dados_res);
$nome_usr = $dados["C_USUARI_S_NOME"];

Como indiquei alguns posts acima

No fórum tem alguns scripts de SESSION, busca por: session

Ou, tenta usar o script pronto que indiquei, aí só faz algumas adaptações para sua tabela.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 25 postagens
Mais de 25 postagens
Tópico Autor
Mensagens: 36

Erro no login

13-11-2008 18:42

o problema nao eh a exibicao dos dados e sim a validacao do login no valida sessao, pois nao faz o login e retorna
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17637
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Erro no login

13-11-2008 18:50

Roda o valida session só com um echo para retornar os valores

echo $_SESSION["email_usr"];

Faz isso nos outros documento, ao invés de retornar alert, usa um echo para ver onde a session se perde.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 25 postagens
Mais de 25 postagens
Tópico Autor
Mensagens: 36

Erro no login

14-11-2008 13:34

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 pq nao leva os dados para frente em debuga.php. Acho q ajudei a me ajudarem.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17637
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Erro no login

14-11-2008 14:05

Fiz alguns testes aqui, só que fiz o seguinte, antes de criar a session, verifico antes se ela existe

<?php session_start(); ?> <form action="" method="POST"> <input type="text" name="email_usr" value=""> <input type="submit"> <?php $email_usr = $_POST['email_usr']; // se a session está vazia, ou seja, sem valor, cria a session if(empty($_SESSION['email_usr'])) { $_SESSION['email_usr'] = $_POST['email_usr']; } echo "O valor é ".$_SESSION['email_usr']; ?>

Com o exemplo acima, em um arquivo chamado: teste1.php, consegui passar para outro arquivo o valor, o arquivo teste2.php tem:
<?php
session_start();
echo "O valor é ".$_SESSION['email_usr'];
?>
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 25 postagens
Mais de 25 postagens
Tópico Autor
Mensagens: 36

Erro no login

14-11-2008 15:35

Fiz como falou sendo que na primeira página ele mostra a session e na segunda ele traz branco. E agora?
0
 
Mais de 25 postagens
Mais de 25 postagens
Tópico Autor
Mensagens: 36

Erro no login

14-11-2008 15:41

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."; } ?>

0
 
Mais de 25 postagens
Mais de 25 postagens
Tópico Autor
Mensagens: 36

Erro no login

16-11-2008 16:34

Pessoal,
Bastei parar o IIS e instalar o APACHE que a sessão passou a andar entre as páginas. Não sei pq 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 nao alterei o collation.

Abs a todos e obrigado pela força.
0

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado