Vocabulário: arquivo = ficheiro; usuário = utilizador; banco de dados = base de dados; cadastro = registo
Neste tutorial, vamos seguir os passos para a criação de formulário de autenticação.
Desde a criação dos campos na tabela do banco de dados, validação das informações, cadastro, autenticação e por fim log out.
Tabela MySQL
Vamos criar os campos para armazenar as informações de usuário e senha:
CREATE TABLE ‘usuario’ (
‘id’ INT( 3 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
’usuario’ CHAR( 32 ) NOT NULL ,
’senha’ CHAR( 32 ) NOT NULL
) ENGINE = InnoDB;
Criamos três campos:
- id – para rotular campos únicos auto-incrementáveis;
- usuario – nome do usuário, que será uma string com no máximo 32 caracteres;
- senha – também string com no máximo 32 caracteres.
Formulário De Login
Estruturamos a página que conterá o formulário para login.
Para formulários de login, utilizamos o método post, ao invés do get, pois este último mostra as informações submetidas na url da página, o que é perigoso em se tratando de dados sensíveis.
O campo que solicita a senha é do tipo password. Com isso os caracteres digitados serão mascarados e na visualização serão mostrados como círculos pretos. Nem precisa explicar o porquê disso.
Foram criados dois submits, para cadastro e acesso. Desta forma os testes tornam-se mais fáceis e na precisamos ficar pulando de um arquivo ao outro.
Conexão Com O Banco De Dados
Vamos conectar o script PHP a um banco de dados mysql para troca de informações.
A arroba no início da primeira linha evita que mensagens de erro sejam mostradas ao usuário em caso de falha na conexão. É aconselhável seu uso para evitar expor informações sobre o código da página. Podemos então mostrar apenas as informações que achamos necessárias.
E é obrigatório manter o usuário informado sobre o que está acontecendo. Principalmente se houve algum problema.
Preenchemos os valores dos parâmetros server(servidor), username(usuário) e password(senha). Configure o seu conforme as informações do servidor.
DOWNLOAD Descarregue o código utilizado neste tutorial para a criação do Formulário De Contacto Com jQuery em formato .zip.
No ambiente de desenvolvimento você pode tirar a arroba da frente da função de conexão e deixar a linha assim:
Desta forma você tem mais informações caso a conexão falhe.
Em seguida selecionamos o banco de dados com o mysql_select_db().
Criando As Variáveis
';
?>
As duas primeiras variáveis servem para descobrirmos qual das ações foi realizada. Em seguida fazemos algumas validações para evitar injeção de código.
Em seguida a senha é encriptada utilizando a função md5() que transforma um simples ‘123’ em uma seqüência aleatória com 32 caracteres entre números e letras. Assim, ser o banco de dados for invadido, o criminoso não terá muito que festejar.
Cadastro De Usuário
alert("Este usuário já existe, por favor escolha outro.")');
exit ($refresh);
}
mysql_query("INSERT INTO usuario (usuario,senha) VALUES ('$usuario','$senha_enc')");
echo '';
exit ($refresh);
}
?>
Se o botão cadastrar do formulário for clicado, a variável que recebe o valor deste campo será preenchida com a palavra “cadastrar”, caso contrário, ela estará vazia.
Desta forma fica fácil descobrir qual dos botões foi clicado. O que não estiver vazio. Se este for o caso de cadastrar, o código abaixo da verificação será executado.
Antes de cadastrar o usuário, o código faz uma busca nos registros da tabela para ver se já existe algum usuário com o mesmo nome. Se for o caso, o usuário é informado e a execução do código é parada.
A linha responsável pela gravação das informações na tabela pode ser lida da seguinte forma:
Utilizando a função mysql_query() insira dentro da tabela usuário, nos campos usuario e senha, os valores contidos nas variáveis $usuario e $senha_enc.
Nesta linha você também pode utilizar o “or die(mysql_error())” após a tentativa de inserção dos dados. Isso em ambiente de desenvolvimento quando colocar a página online, retire.
Se der tudo certo com a gravação, será apresentado um aviso informando do sucesso e após um segundo seremos redirecionados para a página que contém o formulário.
Buscando Usuário
alert("Usuário '.$linha['usuario'].' logado.")';
exit ($refresh);
} else {
echo '';
exit ($refresh);
}
}
?>
Se o botão acessar for pressionado, o script busca na tabela usuario por registros que correspondam aos dados submetidos.
Se a busca retornar uma linha da tabela nós iniciamos os dados da seção com a função session_start(). Com isso podemos criar uma variável de sessão chamada “usuario” que conterá o nome do usuário logado. Isso permite apresentar páginas personalizadas com o nome do internauta.
Em seguida a variável $linha recebe uma array com os dados retornados pela busca em um esquema chave => valor.
Apresentamos então um alerta informando do sucesso da operação e retornamos para a página que contém o formulário de login.
Caso não seja encontrado nenhum registro do usuario ou senha na tabela, um alerta informa sobre isso e o usuário é redirecionado à pagina de login.
Log out
Aquele sair, posicionado no canto superior direito do nosso formulário poderia aparecer somente quando houvesse alguém logado, mas como a página é HTML não é possível fazer a verificação. Preferi deixar assim para não misturar códigos. Fica um desafio para você ao finalizar este tutorial.
Ao clicar sobre o link, somos direcionados para uma página que tem no código, o objetivo de apagar os dados da sessão atual. Com isso outro usuário pode acessar as páginas, além de preservarmos a privacidade do atual usuário. Estas são as linhas:
Iniciamos os dados da seção e então os destruímos! Rápido e sem deixar rastros retornamos para a página de login.
DOWNLOAD: Descarregue o código utilizado neste tutorial para a criação do Script De Login Em PHP e MySQL, em formato .zip.
12 Responses
Valeu Rui,
Muito bom mesmo este tutorial como todos os que eu li e salvei para meus estudos e aperfeiçoamento.
Olá Tito! Obrigado. Foi escrito pelo Maicon Sobczak. Os tutoriais deste autor são muito bons. Eu próprio leio sempre com interesse. Um Abraço Rui Soares
Muito bom este tutorial, excelente para iniciantes! Só uma questão: utilizando o MD5 não é possível "decriptar" a senha; somente a função base64 possuí ENCODE / DECODE. Abs
Olá Pedro! Gosto muito dos tutoriais do Maicon! Um Abraço Rui Soares
Caro Rui, gostei muito deste tutorial, mas estou tentando executar o cadastro. Ele até cadastra na minha table tbl_usuario, mas me retorna a seguinte mensagem: Notice: Undefined index: acessar in C:wampwwwLojaVirtualformulario_login.php on line 7.
Na linha 7 consta o seguinte conteúdo: $acessar = $_POST['acessar'];
O quê pode estar ocorrendo?
Saúde, paz e sucesso!
Abraço,
Moura
Este é um erro muito comum, ele ocorre porque você não definiu se a variavel está sendo usada ou vazia, basta usar:
if (!isset($_POST['NomeCampo'])){
$variavel = $_POST['action'];
}
Ou desativar os erros deste tipo, que não são graves.
error_reporting (E_ALL ^ E_NOTICE);
Cumprimentos, e ótimo tutorial.
teria como vincular ela a um carrinho de compras que tem aki no site? belo tutorial
Olá Felipe,
Tem sim. Basta apenas fazer algumas adaptações.
boas a aqui alguem que perceba de programaçao e que me possa ajudar a por um cadastro no meu site?
Olá Miguel,
Se precisar de ajuda, entre em contato comigo através do email a seguir: comandosusa@gmail.com
Ainda não testei os códigos, para falar a verdade não intendo muito disso, mas passei uns meses ai só se dedicando a estes tipos de códigos fiz várias pesquisas.. mas não sei se os códigos que estar no tutorial pode funcionar em site que não é meu.. tipo o site da empresa em que me restriei gratuitamente.. tem um aqui que ja testei os códigos e dá certo mas os scripts dão erro de vez enquando mas acabei com isso com uma pesquisa que fiz pra anular este processo de erro dos scripts… enfim bom trabalho 😉
Muito bom, parabéns! Você realmente entende a arte de ensinar, ficou muito bem explicado e simples!