O banco de dados pode ser o mesmo que você usará no seu site ou sistema, seja ele qual for. Basta apenas adicionar as tabelas "usuários" e "sessões", as quais serão responsáveis por armazenar os dados do usuário e das sessões criadas respectivamente. Os nomes "usuários" e "sessões" não são obrigatórios, mas é uma boa ideia seguir esses padrões.
Para facilitar, coloquei abaixo os códigos já prontos para criar as tabelas necessárias. No PhpMyadmin, você deve escolher seu banco de dados e depois a aba SQL, para colar os códigos abaixo e criar as tabelas.
Código para criar a tabela de usuários:
CREATE TABLE IF NOT EXISTS `usuarios` (
`codusuario` int(11) NOT NULL AUTO_INCREMENT,
`nome` varchar(255) DEFAULT NULL,
`email` varchar(255) DEFAULT NULL,
`senha` varchar(255) DEFAULT NULL,
`privilegio` varchar(255) DEFAULT NULL,
`status` varchar(255) DEFAULT NULL,
PRIMARY KEY (`codusuario`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
Código para criar a tabela de sessões:
CREATE TABLE IF NOT EXISTS `sessoes` (
`codsessao` mediumint(9) NOT NULL AUTO_INCREMENT,
`data` date DEFAULT NULL,
`hora` time DEFAULT NULL,
`ipserver` varchar(255) DEFAULT NULL,
`iprede` varchar(255) DEFAULT NULL,
`sessao` varchar(255) DEFAULT NULL,
`usuario` varchar(255) DEFAULT NULL,
`datafecha` date DEFAULT NULL,
`horafecha` time DEFAULT NULL,
`status` varchar(255) DEFAULT NULL,
PRIMARY KEY (`codsessao`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=186 ;
Explicando a criptografia da senha
O login e a senha que serão digitados na janela de login serão conferidos com os que estão salvos no banco de dados como qualquer sistema, porém, por uma questão de segurança - e porque não dizer também de ética - as senhas digitadas não serão guardadas no banco de dados literalmente como foram digitadas.
Para armazenar senhas, sempre gostei de usar uma técnica de criptografia com MD5 (
http://pt.wikipedia.org/wiki/MD5) por ser unidirecional, ou seja, uma vez que um texto é convertido para MD5 a sua conversão para o valor original é impossível.
Mesmo que alguém tenha acesso à tabela que contém seus dados de usuário, ele não saberá o que fazer com a sua senha, que fica num formato parecido com este: f278b0cb1f1d4e55eea62e8974707214.
Então, resumindo, o sistema de login receberá a senha digitada pelo usuário, converterá para MD5 e só aí verificará se confere com a senha que está no banco de dados.
No exemplo a seguir a senha criptografada é a palavra djair, mas se você desejar criar sua própria senha pode criar um arquivo em php só para lhe auxiliar na criação das senhas. Use o código abaixo para criar uma página com o nome senha.php e veja como é simples criptografar uma senha.
<? echo "Senha: ".md5($senha); ?>
<form method=post action=senha.php>
<input type=text name=senha>
<input type=submit name=OK value=OK>
</form>
Criando um usuário "na mão" para testar os códigos
Antes de criar as páginas em php, é óbvio que deve haver pelo menos um usuário no banco de dados para fazer os testes. Este usuário será criado manualmente, através do PhpMyadmin.
Lembre-se de que, como explicado acima, a senha deve ser armazenada no banco de dados já no formato MD5, portanto faça esta conversão antes de inserir os dados.
INSERT INTO `usuarios` (`codusuario`, `nome`, `email`, `senha`, `privilegio`, `status`) VALUES (NULL, 'Djair Dutra', 'djair@easytecnologia.com.br', 'f278b0cb1f1d4e55eea62e8974707214', 'ADMIN', 'ATIVO');
Sobre a formatação das páginas
Como o intuito aqui é apenas a informação pura e simples sobre autenticação, mais uma vez lembro que não me prenderei também a detalhes de formatação de página. Se fôssemos detalhar todos os estilos de formatação e detalhes em CSS, ou mesmo em formatação pura em HTML este artigo ficaria gigantesco.
Portanto, suponho que o leitor deste artigo tenha algum conhecimento de HTML e saiba "encaixar" os códigos no conteúdo da sua página.