login com MD5... - joaonunofz - 03-02-2015 02:06
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;
RE: login com MD5... - eSkiSo - 04-02-2015 00:04
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
}
RE: login com MD5... - joaonunofz - 04-02-2015 00:50
(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
|