Como criar um sistema de autenticação de usuários usando PHP/MySQL

Nesse artigo ilustrarei de uma maneira simples como se desenvolver um sistema de autenticação em PHP usando sessões MySQL. A simplicidade é tamanha que mais uma vez mostra-se o poder do PHP.

[ Hits: 116.335 ]

Por: Luís Fred em 04/10/2006


Iniciando com os comandos SQL



Antes de começar com o php, é necessário criar a base de dados. Como se trata de um sistema de autenticação, iremos criar duas tabelas. Uma que irá conter os dados dos usuários, como, "nome", "login" e "senha" e a outra irá conter os dados que irão aparecer na tela após o usuário ter feito a autenticação. Abra um terminal qualquer e vamos aos comandos:

Digite no terminal o seguinte:

$ mysql -u usuário -p
Enter password: *******

Vai aparecer aquela mensagem de boas vindas e logo após, o prompt do MySQL:

mysql>

Então faça o seguinte:

mysql> create database nome_da_base;
mysql> use nome_da_base;

Agora vamos criar a primeira tabela, que irá conter as informações nome, login e senha:

mysql> create table user (
-> ID_USER int(4) not null auto_increment primary key,
-> NOME varchar(20) not null,
-> LOGIN varchar(20) not null,
-> SENHA varchar(20) not null );

inserindo informações de usuários:

mysql> INSERT INTO user VALUES ("1", "Luís Fred", "fred", "123456");
mysql> INSERT INTO user VALUES ("2", "Thomas Freud", "thomas", "abcd");

Pronto, a primeira tabela já foi criada, vamos agora à segunda:

mysql> create table distro (
-> ID_USER int(4) not null,
-> ID_DISTRO int(4) not null auto_increment primary key,
-> DISTRO varchar(20) not null );

Inserindo os dados que irão aparecer na tela após a autenticação:

mysql> INSERT INTO distro VALUES ("1", "1", "Slackware");
mysql> INSERT INTO distro VALUES ("2", "2", "Debian");
mysql> INSERT INTO distro VALUES ("2", "3", "Ubuntu");

Pronto, o banco de dados já está criado. Para verificar digite os seguintes comandos no prompt:

mysql> show tables;
+--------------------------+ 
| tables_in _nomedabase    | 
+--------------------------+ 
|      user                | 
|     distro               | 
+--------------------------+ 
É isso que vai aparecer se você tiver feito tudo direitinho.

Agora digite o seguinte comando para sair do prompt:

mysql> quit

A primeira parte já acabou, agora vamos para o PHP, vamos criar os seguintes scripts em php: conecta.php, autentica.php, logout.php e é claro, index.php.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Iniciando com os comandos SQL
   3. Script para conexão com o banco de dados
   4. Script de autenticação
   5. Script que vai fazer o logout
   6. Página inicial
Outros artigos deste autor

Criando uma agenda eletrônica com PHP/MySQL

Upload de imagens com criação de thumbnails em PHP

Leitura recomendada

Abordagem exemplificada à Orientação a Objetos com PHP

Provendo dados em um servidor PostgreSQL através do Apache e PHP

Criando backup do MySQL com o mysqldump

Gallery - Álbum de fotos no seu site

Armazenando datas de uma outra forma

  
Comentários
[1] Comentário enviado por removido em 04/10/2006 - 09:06h

muito bom! continue postando mais artigos sobre o assunto

[2] Comentário enviado por Bolche em 04/10/2006 - 09:51h

Seria interessante se você escapasse a senha e o nome de usuário com mysql_real_escape() pois caso contrário, em alguns servidores haveria brecha para fazer um SQL injection.

[3] Comentário enviado por balani em 04/10/2006 - 11:12h

Muito bom o artigo

[4] Comentário enviado por atonemheb em 05/10/2006 - 16:38h

gostei muito! Vou esperar teus proximos artigos ainda seguindo este assunto. Parabens!

[5] Comentário enviado por rodrigo.dfreitas em 05/10/2006 - 17:04h

Bom artigo, eu só acrescentaria duas coisas, primeiro um tratamento nos dados recebidos de login e senha, algo como sugerido acima e segundo na hora da conexao você poderia usar o pconnect no lugar do connect, assim o php manteria apenas uma conexao pra todas as sessoes abertas tornando muito mais facil a vida do mysql.

No mais parabens pelo artigo

Abraço

Rodrigo

[6] Comentário enviado por patrickbrandao em 08/10/2006 - 11:22h

Huahau! Seu sistema de login é moleza de hackear,

se usar login e senha:

' or '1'='1

Vai passar!
Faça assim: substitua as aspas simples por \' no texto digitado pelo usuário.

A tecnica acima se chama "sql injection", tome nota em todos os sistemas que tenha usado isso. Eu ja entrei em milhas de www.algumacoisa.com.br/admin/ com essa tecnica.

[7] Comentário enviado por demattos em 08/10/2006 - 17:51h

Muito bom este artigo estava procurando isto
Valeu

[8] Comentário enviado por rootuser em 09/10/2006 - 22:22h

Muito bom seu artigo gosto muito de PHP.... Continue postando mais sobre o assunto .... t+

[9] Comentário enviado por agk em 24/10/2006 - 17:04h

Bom o artigo, dá pra ter uma noção, pra quem nunca fez nada em php+mysql consegue aprender alguma coisa.
Quanto a segurança o autor cita que não está levando isso em consideração no artigo, tudo bem podemos até deixar isso de lado em um primeiro instante, mas assim que for possível é bom aprender um pouco sobre tratamento de variáveis.

Não entendi porque foi criado a tabela distro, se foi meramente por criar, já que ela não está associada ao usuário, então o resultado será sempre o primeiro da tabela, no caso slackware.
É isso, [ ]'s.

[10] Comentário enviado por lavoie em 27/12/2006 - 11:39h

bem, nao entendo quase nada, para nao dizer nada de php e mysql, mas se alguem puder me ajudar com alguma dica para começar,
queria montar um sistema:
1º Cadastro de usuario de internet.
2º Os usuarios pudessem alterar os proprios dados acessando o servidor pelo navegador dentro da rede.
Tenho servidor linux, rodando, apache2 , mysql, php5, phpmyadmin

[11] Comentário enviado por fabiapricelog em 02/05/2007 - 20:34h

Obrigadaaaaa
Vc me ajudou muito!!!!
Bjim

[12] Comentário enviado por pauloindio em 04/12/2007 - 12:12h

amigo que terminal e este?
onde abro este terminal?
vlw2 um abraço

[13] Comentário enviado por morphors em 26/10/2008 - 22:53h

parabéns!!!

obrigado pelo ótimo post

[14] Comentário enviado por comfaa em 28/10/2008 - 13:02h

muito legal !!!

[15] Comentário enviado por halisonsc em 15/01/2009 - 14:34h

muito bom este artigo.

[16] Comentário enviado por removido em 05/02/2009 - 12:20h

Ow amigo realmente muito bom esse topico ... só que estou precisando da sua ajuda, implemente esse esquema de autenticação ao meu site... Funcionou que uma blz ... só que agora estou precisando de um esquema para ele registrar os usuarios ao banco mysql... Se possivel me ajudar ficaria muito Grato ....


Vlw aee !=D

[17] Comentário enviado por rborges em 29/10/2009 - 15:47h

alguem sabe como fazer que somente determinado usuario entre na página?

[18] Comentário enviado por solusweb em 10/02/2010 - 09:05h

Ótimo artigo.Parabéns.
http://www.solusweb.com.br/blog

[19] Comentário enviado por albert cruz em 22/02/2010 - 11:45h

Luis, sei que seu post eh antigo mas estou estudando isso agora, fiz tudo que vc mandou mas nao consigo sucesso, nao conecto no banco de dados, me tire algumas duvidas. No conecta.php, quais dados devo preencher as variaveis, o login e senha sera do acesso ao mysql ou dos nome ficticios que criei a base de dados?
grato

[20] Comentário enviado por removido em 24/12/2010 - 15:53h

Simples e objetivo. Parabéns!


Contribuir com comentário