• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Romanovs

[Resolvido] Registo não existente em script de login

5 mensagens neste tópico

Boas outra vez,

Ando aqui à uns 3 dias a bater com a cabeça por causa de um script que criei de login que me anda sempre a dar ou: Registo inexistente ou Palavra passe ou Nome de utilizador errado embora meta tudo bem.

São 3 páginas

login1.php com o formulário

login2.php com o script em si

funcoes.php com umas quantas funções

Aí vão os códigos:

entrar1.php

<HTML>
<HEAD>
<TITLE>Entrar</TITLE>
</HEAD>
<BODY>
<form action="entrar2.php" method="POST">
<table border="0">
<tr><td colspan=2><h1>Entrar</h1></td></tr>
<tr><td>Nome de Utilizador:</td><td>
<input type="text" name="nome" maxlength="15">
</td></tr>
<tr><td>Palavra-passe:</td><td>
<input type="password" name="passe" maxlength="20">
</td></tr>
<tr><td colspan="2" align="right">
<input type="submit" name="entrar" value="Entrar">
</td></tr>
</table>
</form>
</BODY>
</HTML>

entrar2.php

<?
include 'funcoes.php';
  $campo_nome = $_POST['nome'];
  $campo_passe = $_POST['passe'];
        if ($campo_nome) {
           if ($campo_passe) {
              $ligacao=mysql_connect("server","utilizador","passe") or die ("Impossivel ligar a Base de Dados.");
              mysql_select_db("base_de_dados",$ligacao);

                      $sql = "SELECT * FROM membro WHERE nome='$campo_nome'";
                      $resultado = mysql_query($sql);
                      $registo = mysql_fetch_array($resultado);
                                $bd_id = $registo['ID'];
                                $bd_passe = $registo['passe'];
                                $campo_passe_encriptado = md5($campo_passe);
                      $numero_de_campos = mysql_num_rows($resultado);
/*e necessario usar a funcao md5 de encriptacao porque e assim que os campos de passe estao na BD*/


                                                if ($numero_de_campos == 0) {
    	                                        echo "Registo inexistente";
    	                                        include "entrar1.php";
                                                }
                                                elseif ($campo_passe_encriptado == $bd_passe)
                                                 {
                                                  session_start();
                                                  $_SESSION['id']= $bd_id;
                                                  $_SESSION['nome']= $registo['nome'];
                                                  $_SESSION['passe']= $bd_passe;
                                                  $_SESSION['nivel']= $registo['nivel'];
                                                  $_SESSION['mail']= $registo['mail'];

                                                  redir("membro.php");
                                                 } elseif ($campo_passe_encriptado != $bd_passe)
                                                 {
                                                 echo"Palavra-passe ou Nome de Utilizador errados.";
                                                 include "entrar1.php";
                                                 }

           } else { echo "Nao inseriu a palavra-passe.";include "entrar1.php";}
        } else { echo "Nao inseriu o nome."; include "entrar1.php";}
        
mysql_close($ligacao);
?>

funcoes.php

<?
function redir($site_redir)
  {
?>
<html>
<head>
<title>Redireccao</title>
<head>
<meta http-equiv="refresh" content="0; URL=<?=$site_redir?>">
</head>
<body>
<div class="coiso" align="center"><a href="<?=$site_redir?>">Redireccao...</a></div>
</body>
</html>
<?
    die();
  }
?>

Alguém detecta o erro?

Agradecido desde já :P;) ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Depois de ver o código, parece-me estar tudo bem, mas, sem ter a certeza se será isto, qual é o tamanho do teu campo da senha? Como usas md5 não te podes esquecer que ele fica maior, provavelmente está a ficar truncado na bd, e quando vais fazer a comparação, dá sempre mal pois o que o utilizador inseriu e foi codificado está completo, a senha da bd não..

Ve se pode ser isso, acho que já tive um problema igual à uns tempos atrás...

Cumps,

milks

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

yep obrigadao :cheesygrin: um varchar 32 resolveu a coisa e mudar esta linha:

$sql = "SELECT * FROM membro WHERE nome='".$campo_nome."'";

mas agora dá erro nas sessões é a primeira vez que lhes ando a mexer

diz:

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/www/romanovs.awardspace.com/noticias/funcoes.php:20) in /home/www/romanovs/noticias/entrar2.php on line 28

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/www/romanovs.awardspace.com/noticias/funcoes.php:20) in /home/www/romanovs/noticias/entrar2.php on line 28

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tem atencao que o session_start tem que ser a primeira coisa a ir para o browser, ou seja, convem pores no principio do codigo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora