Cadastro e Login - #15 Banco de Dados
03/10/2018Hoje vamos criar as três tabelas do banco de dados do nosso sistema de Cadastro e Login utilizando PHP e MySql.
Alterando a ClassConexao
Antes de mais nada, faremos uma pequena alteração na ClassConexao, passando as constantes do arquivo config.php para a nossa classe. Ficará da seguinte forma:
<?php
namespace Models;
abstract class ClassConexao{
protected function conectaDB()
{
try{
$con=new \PDO("mysql:host=".HOST.";dbname=".DB."","".USER."","".PASS."");
return $con;
}catch (\PDOException $erro){
return $erro->getMessage();
}
}
}
Com o código acima, todas as mudança do nosso banco de dados poderão ser alteradas facilmente apenas mudando o arquivo config.php
Criando o banco de dados para o sistema de login
Conforme explicado anteriormente, nosso sistema terá 03 tabelas sendo elas:
users: responsável por abrigar todos os dados pessoais e de login do usuário.
attempt: armazenará as tentativas de login errôneas feitas pelo usuário, para que
evitemos que um robô fique tentando combinações de senhas.
confirmation: gerará um token para confirmação do usuário pelo email, assim como
a alteração de senha pelo "Esqueci minha senha".
O banco de dados ficará assim:
CREATE TABLE IF NOT EXISTS `attempt` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ip` varchar(20) CHARACTER SET latin1 NOT NULL,
`date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `confirmation` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(90) NOT NULL,
`token` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nome` varchar(90) NOT NULL,
`email` varchar(90) NOT NULL,
`senha` varchar(90) NOT NULL,
`dataNascimento` varchar(15) NOT NULL,
`cpf` varchar(20) NOT NULL,
`dataCriacao` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`permissoes` varchar(20) NOT NULL,
`status` varchar(20) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
COMMIT;
Repare acima que setamos o email com unique, afinal cada cadastro só poderá optar por um email único para evitar conflito de login.
Sucesso nos códigos e na vida!