Cadastro e Login - #18 Cadastrando Hash Password
12/10/2018Na vídeo-aula de hoje faremos a inserção da senha no banco de dados utilizando a função password_hash() do php.
Inserindo senha no DB com PHP
O programador nunca deve inserir uma senha literal em texto plano no banco de dados. O correto é sempre utilizar um hash de senha. O PHP facilita muito a nossa vida com a função password_hash().
Para fazer essa inserção, criaremos a ClassPassword:
<?php
namespace Classes;
class ClassPassword{
#Criar o hash da senha para salvar no banco de dados
public function passwordHash($senha)
{
return password_hash($senha, PASSWORD_DEFAULT);
}
}
Uma pequena errata no nosso código: dentro do index.php na raiz do nosso site devemos colocar a include variables após o include do composer. Ficará assim:
<?php
header("Content-Type: text/html; charset=utf-8");
include("config/config.php");
include(DIRREQ."lib/vendor/autoload.php");
include(DIRREQ."helpers/variables.php");
$dispatch=new Classes\ClassDispatch();
include($dispatch->getInclusao());
Por fim, basta chamarmos o método passwordHash() criado na ClassPassword dentro da variável hashSenha do arquivo variables.php:
<?php
$objPass=new \Classes\ClassPassword();
if(isset($_POST['nome'])){$nome=filter_input(INPUT_POST,'nome',FILTER_SANITIZE_FULL_SPECIAL_CHARS);}else{$nome=null;}
if(isset($_POST['email'])){$email=filter_input(INPUT_POST,'email',FILTER_VALIDATE_EMAIL);}else{$email=null;}
if(isset($_POST['cpf'])){$cpf=filter_input(INPUT_POST,'cpf',FILTER_SANITIZE_FULL_SPECIAL_CHARS);}else{$cpf=null;}
if(isset($_POST['dataNascimento'])){$dataNascimento=filter_input(INPUT_POST,'dataNascimento',FILTER_SANITIZE_FULL_SPECIAL_CHARS);}else{$dataNascimento=null;}
if(isset($_POST['senha'])){$senha=$_POST['senha']; $hashSenha=$objPass->passwordHash($senha);}else{$senha=null; $hashSenha=null;}
if(isset($_POST['senhaConf'])){$senhaConf=$_POST['senhaConf'];}else{$senhaConf=null;}
$dataCreate=date("Y-m-d H:i:s");
$token=bin2hex(random_bytes(64));
$arrVar=[
"nome"=>$nome,
"email"=>$email,
"cpf"=>$cpf,
"dataNascimento"=>$dataNascimento,
"senha"=>$senha,
"hashSenha"=>$hashSenha,
"dataCreate"=>$dataCreate,
"token"=>$token,
];
Posts Relacionados
Cadastro e Login - #17 Validate Isset Email
Vamos trabalhar hoje com uma segunda implementação de validação do nosso email, checando no banco de dados se o email já está cadastrado.
Cadastro e Login - #19 Validate Password
No tutorial de hoje aprenderemos como realizar a validação da senha no cadastro. Verificaremos a força da senha e se a senha está igual a confirmação de senha.