Necessito usar a criptografia md5 no campo senha. e enviar criptografado para o banco de dados. porém quando eu tento criptografar na linha do $statement->bindValue(3, $cli->senha);
fazendo $statement->bindValue(3, md5($cli->senha));
não funciona e retorna 0.
como poderia fazer essa camada de segurança ?
segue o código da classe DAO.
<?php
require_once 'persistence/conexaoBanco.class.php';
class ClienteDAO{
private $conexao = null;
public function __construct(){
$this->conexao = ConexaoBanco::getInstance();
}
public function __destruct(){}
public function cadastrarCliente($cli){
try {
$statement = $this->conexao->prepare(
"insert into clientes(id,email,cpf,senha)
VALUES(null,?,?,?)");
$statement->bindValue(1, $cli->email);
$statement->bindValue(2, $cli->cpf);
$statement->bindValue(3, $cli->senha);
$statement->execute();
} catch (PDOException $e) {
echo "Erro ao Cadastrar Clientes!" .$e;
}
}
}
Não funciona é muito vago. Dá alguma exceção? O cliente é cadastrado mas com 0 no campo senha? Ou nem um nem outro?
Experimente ver primeiro se a função md5 está operando, antes de tentar gravar no banco. Algo como:
$senha_md5 = md5($cli->senha);
var_dump($senha_md5);
$statement->bindValue(3, $senha_md5);
Veja no retorno da requisição o que o var_dump está exibindo.
Se não estiver exibindo nada (ou zero), tente colocar uma string qualquer para teste, em vez do que foi digitado pelo usuário. Algo como:
$senha_md5 = md5('12345678');
var_dump($senha_md5);
$statement->bindValue(3, $senha_md5);
Por fim, 2 observações:
- não sei se esse é um projeto real, mas atualmente não é muito recomendado usar md5 para criptografar senhas. Há opções melhores;
- se seu campo id é auto_increment (MySQL), você não precisa inclui-lo no insert, nem passar null nos parâmetros. Ficaria assim: insert into clientes(email,cpf,senha) VALUES(?,?,?). Ajuste os parâmetros de acordo.
Abraço.
@TerraSkilll fiz oque você falou, está retornando zero.

O campo de senha é um varchar? Tem o tamanho certo? Um md5 precisa de 32 caracteres, um hash melhor (fortemente indicado, como falou o @TerraSkilll) vai ocupar mais.
Não dá nenhum erro?
E o que saiu no var_dump, que te recomendei ver?
Abraço.
o meu campo senha no Banco era int. dai por isso que não entrava os dados.