Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ai pessoal tudo bem?
Bem tou aqui com um problema tipo eu criei um sistema de cadastro e login no cadastro tudo bem consegui fazer quando o user se regista a password na base de dados fica coadificada agora o problema é no login como a pass esta coadificada com md5 não consigo ir busca-la quando fasso login aparece sempre "Verifica se prenches-tes correctamente todos os dados!" meu codigo:
<?php
ob_start();
include ('../Includes/Conexao.php');
require_once('funcoes.php');
$email = mysql_real_escape_string($_POST['email']);
$password = mysql_real_escape_string md5($_POST['password']);
if (!empty($_POST) && (empty($_POST['email']) || empty($_POST['password']))) {
echo "<script> alert('O email e a password sao obrigatorios!');</script> <meta http-equiv='refresh' content='0; url=inicio.php'>"; exit;
}
$sql = "SELECT `id`,`nome`,`email`,`idade` FROM `registos` WHERE (`email` = '". $email."') AND (`password` = '".$password."')";
$query = mysql_query($sql);
if (mysql_num_rows($query) != 1) {
echo "<script> alert('Verifica se prenches-tes correctamente todos os dados!');</script> <meta http-equiv='refresh' content='0; url=inicio.php'> "; exit;
} else {
$resultado = mysql_fetch_assoc($query);
if (!isset($_SESSION)) session_start();
$_SESSION['id'] = $resultado['id'];
$_SESSION['u_email'] = $resultado['email'];
$_SESSION['u_nome'] = $resultado['nome'];
if(isset($_POST['lembrar'])){
setcookie("lembrar", $email, time()+(60*60*24*365));
}
header("Location: ouvinte/index.php?id={$_SESSION['id']}&nome={$_SESSION['u_nome']}"); exit;
}
?>Ja meti isto
error_reporting(E_ALL);
ini_set("display_errors", 1);
e ja alterei assim mas continua sem dar :/
$password = md5(mysql_real_escape_string($_POST['senha']));
retorne os erros de sql também
troque
$query = mysql_query($sql);
por
$query = mysql_query($sql) or die(mysql_error());
Não entendi a finalidade da função ob_start no seu script.
Experimente usar a função MD5 do próprio MySQL.
Mude aqui:
$password = mysql_real_escape_string($_POST['password']);
E aqui:
$sql = "SELECT id,nome,email,idade FROM registos WHERE (email = '". $email."') AND (password = MD5('".$password."'))";
Leo nao funcionou :/
tenho de ter ob_start porque se nao da erro...
meti assim
<?php
ob_start();
include ('../Includes/Conexao.php');
require_once('funcoes.php');
$email = mysql_real_escape_string($_POST['email']);
$password = mysql_real_escape_string($_POST['password']);
if (!empty($_POST) && (empty($_POST['email']) || empty($_POST['password']))) {
echo "<script> alert('O email e a password sao obrigatorios!');</script> <meta http-equiv='refresh' content='0; url=inicio.php'>"; exit;
}
$sql = "SELECT `id`,`nome`,`email`,`idade` FROM `registos` WHERE (`email` = '". $email."') AND (`password` = MD5('".$password."'))";
$query = mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($query) != 1) {
echo "<script> alert('Verifica se prenches-tes correctamente todos os dados!');</script> <meta http-equiv='refresh' content='0; url=inicio.php'> "; exit;
} else {
$resultado = mysql_fetch_assoc($query);
if (!isset($_SESSION)) session_start();
$_SESSION['id'] = $resultado['id'];
$_SESSION['u_email'] = $resultado['email'];
$_SESSION['u_nome'] = $resultado['nome'];
if(isset($_POST['lembrar'])){
setcookie("lembrar", $email, time()+(60*60*24*365));
}
header("Location: ouvinte/index.php?id={$_SESSION['id']}&nome={$_SESSION['u_nome']}"); exit;
}
?>ob_start porque se nao da erro... :::::> que erro?
quanto a MD5
$S = md5($password);
$query = mysql_query("SELECT * FROM registos WHERE email=\"$email\" AND password=\"$S\"");
if(mysql_num_rows($query) != 0) {
$resultado = mysql_fetch_assoc($query);
if (!isset($_SESSION)) session_start();
$_SESSION['id'] = $resultado['id'];
$_SESSION['u_email'] = $resultado['email'];
$_SESSION['u_nome'] = $resultado['nome'];
if(isset($_POST['lembrar'])){
setcookie("lembrar", $email, time()+(60*60*24*365));
}
echo "<script> alert('Verifica se prenches-tes correctamente todos os dados!');</script> <meta http-equiv='refresh' content='0; url=inicio.php'> "; exit;
} else {
header("Location: ouvinte/index.php?id={$_SESSION['id']}&nome={$_SESSION['u_nome']}"); exit;
}tem certeza que no banco sua senha está codificada em md5 e seu campo na tabela aceita 32 caracteres?
Ja funciona ;) o problema era dos caracteres so tinha 15 meti 32 como o victor disse e depois meti o que o leozito disse
$sql = "SELECT `id`,`nome`,`email`,`idade` FROM `registos` WHERE (`email` = '". $email."') AND (`password` = MD5('".$password."'))";
ja funciona...
Cristiano este é o erro que da se não tenho o ob_start();
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Includes/Conexao.php:12) in CriaLogin.php on line 26
Warning: Cannot modify header information - headers already sent by (output started at Includes/Conexao.php:12) in CriaLogin.php on line 32
Warning: Cannot modify header information - headers already sent by (output started at Includes/Conexao.php:12) in CriaLogin.php on line 35
Bem agora tenho mais uma pergunta como eu ja tenho alguns cadastros no site e as senhas dos users nao estao coadificadas existe maneira de as coadificar?
se você souber quais registros são você pode fazer um update
update `registos` set `password` = MD5(`password`) WHERE ..
mas se você inseriu o password em md5 em um campo de 15 caracteres, não tem jeito, cortou pedaço da string
sao alguns registos cerca de 90... não vou estar a coadificar a pass de cada user 1 por 1 xD
isso aqui não é um por um
update registos set password = MD5(password) WHERE ..
basta colocar algum critério que atenda aos 90, ou se não pelo menos a maioria
Ja consegui Victor ;)
Muito obrigado a todos mesmo!
isso era para dar erro
$password = mysql_real_escape_string md5($_POST['password']);
se não estiver aparecendo habilite os erros
coloca no início do código
mude para
$password = md5(mysql_real_escape_string($_POST['senha']));