
andrebian
(usa Fedora)
Enviado em 13/04/2014 - 11:10h
Velho, isso é algo muito básico do PHP.
O comparador no PHP é "==". Com este operador você verifica se os VALORES são iguais, caso você tenha os valores 1 e '1' (um inteiro e uma string) o resultado será verdadeiro.
Existe também o operador de equivalência que é o mais indicado, "===". Este operador compara se os valores são idênticos em gênero número e grau. Ou seja, 1 e '1' é falso pois a tipagem de ambos não é equivalente. Já '1' e '1' é verdadeiro pois além do valor ser idêntico a tipagem é a mesma, uma string.
Para comparar senhas você basicamente usa da seguinte forma:
<?php
$email = 'email digitado pelo usuário';
$senha = 'senha digitada pelo usuário';
// busca no banco de dados a partir do email somente
$query = mysql_query("SELECT * FROM users WHERE email='{$email}'");
if ( mysql_affected_rows() && !mysql_error() ) {
$user = mysql_fetch_assoc($query);
// comparando as senhas (se a mesma foi gravada como plain text no banco
if ( $senha === $user['senha'] ) {
return true;
}
// SEGUNDA OPÇÃO, se a senha tiver passado por um hash qualquer, md5, sha1, base64...
if ( $senha === metodo_utilizado($user['senha']) ) {
return true;
}
// lembrando que ao invés de 'metodo_utilizado()' deve ser colocado o método de hash que a senha foi gravada no banco de dados.
}
return false;