Forum Pplware

Versão Completa: login com MD5...
Está de momento a ver uma versão reduzida do nosso conteúdo. Ver versão completa com o formato adequado.
BOM DIA TENHO UM QUEBRA CABEÇA Q ME ESTA A DEIXAR FULO...
O PROBLEMA É QUE NAO CONSIGO.....NAO PERCEBO...NO CAMPO 'PASS' DA BASE DE DADOS JA ESTA EM md5... e quando tento fazer a comparação diz-me sempre que o username ou password estão incorretos....

$erro = '';


if(isset($_REQUEST['btn_submit']))
{

//capturar os dados do formulario
$utilizador = $_POST['text_utilizador'];
$password_utilizador =MD5($_POST['text_password']);
 

$consulta = mysql_query( "SELECT * FROM users WHERE username = '$utilizador' AND pass = '$password_utilizador'  ");

$resultado = mysql_fetch_array($consulta);


//verificar se os campos estão preenchidos
if($utilizador == "" || $password_utilizador == "")

{

$erro = 'Não foram preenchidos os campos necessarios'; 

}

elseif($utilizador != $resultado['username'] || $password_utilizador != $resultado['pass'])

{
 
$erro = 'username ou password incorretos';

}

else

{
     //definir os dados da sessão 
$_SESSION['user'] = $utilizador;
Faz algo assim (não uses o mysql mas sim o mysqli):

Código:
<?php

$utilizador = $_POST["text_utilizador"];
$password_utilizador = md5($_POST["text_password"]);

if($utilizador == "" || $password_utilizador == "") { // se faltar dados nao faz a query
      $erro = "Faltam dados.";
      //exit();
      echo "Erro: ".$erro; //da erro se faltarem dados.
}
else {
    $mysqli = new mysqli("localhost", "root", "", "test"); // preenche com os dados da tua DB

    if ($mysqli->connect_errno) {
        printf("Erro ao connectar: %s\n", $mysqli->connect_error);
        exit(); //da erro e sai do script se nao conseguir connectar a BD
    }

    //aqui crias a query e fazes um real_escape ao dados inseridos para evitar sql_injection
    $query = sprintf("SELECT * FROM users 
    WHERE username='%s' AND pass='%s'",
    mysqli_real_escape_string($mysqli,$utilizador),
    mysqli_real_escape_string($mysqli,$password_utilizador));

    //faz a query a BD
    $result = mysqli_query($mysqli,$query);


    // debugging. - retirar quando em producao
    if (!$result) {
        $message  = 'Erro: ' . mysql_error() . "\n";
        $message .= 'Query: ' . $query;
        die($message);
    }

    $row = mysqli_fetch_assoc($result); //coloca o resultado num array
    if(count($row) > 0) { //se houver dados entao
        $_SESSION['user'] = $row['utilizador'];
        echo "Utilizador: ".htmlspecialchars($row['utilizador']);
    }
    else echo "Utilizador ou password errados!"; // senao o utilizador ou a password estao errados
    mysqli_close($mysqli); //fecha a coneccao a BD
}
(04-02-2015 00:04)eSkiSo Escreveu: [ -> ]Faz algo assim (não uses o mysql mas sim o mysqli):

Código:
<?php

$utilizador = $_POST["text_utilizador"];
$password_utilizador = md5($_POST["text_password"]);

if($utilizador == "" || $password_utilizador == "") { // se faltar dados nao faz a query
      $erro = "Faltam dados.";
      //exit();
      echo "Erro: ".$erro; //da erro se faltarem dados.
}
else {
    $mysqli = new mysqli("localhost", "root", "", "test"); // preenche com os dados da tua DB

    if ($mysqli->connect_errno) {
        printf("Erro ao connectar: %s\n", $mysqli->connect_error);
        exit(); //da erro e sai do script se nao conseguir connectar a BD
    }

    //aqui crias a query e fazes um real_escape ao dados inseridos para evitar sql_injection
    $query = sprintf("SELECT * FROM users 
    WHERE username='%s' AND pass='%s'",
    mysqli_real_escape_string($mysqli,$utilizador),
    mysqli_real_escape_string($mysqli,$password_utilizador));

    //faz a query a BD
    $result = mysqli_query($mysqli,$query);


    // debugging. - retirar quando em producao
    if (!$result) {
        $message  = 'Erro: ' . mysql_error() . "\n";
        $message .= 'Query: ' . $query;
        die($message);
    }

    $row = mysqli_fetch_assoc($result); //coloca o resultado num array
    if(count($row) > 0) { //se houver dados entao
        $_SESSION['user'] = $row['utilizador'];
        echo "Utilizador: ".htmlspecialchars($row['utilizador']);
    }
    else echo "Utilizador ou password errados!"; // senao o utilizador ou a password estao errados
    mysqli_close($mysqli); //fecha a coneccao a BD
}
O ERRO ESTAVA NA BASE DE DADOS EM QUE O CAMPO PASSWORD ERA VARCHAR(30) E NÃO 32 !!!
CUSTOU MAS CONSEGUI ENCONTRAR O ERRO, MUITO OBRIGADO PELA SUA AJUDA E DICA E PELA SUA DISPONIBILIDADE Smile
URL's de Referência