Olá, hoje vamos ver como criar um sistema bem simples de cadastro de usuário e login utilizando PHP + MySQL.
Estou desenvolvendo um projeto e os códigos aqui apresentados serão usados nele pode acessa-lo clocando aqui
Criando a tabela ‘usuarios’
A primeira coisa a ser feita é criar a sua tabela no banco de dados, aqui nós utilizaremos apenas 5 campos, no meu caso estou usando o phpMyAdmin.
Create table usuarios ( Id_usuario Int UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT, nome Varchar(40), email Varchar(40), login Varchar(30), senha Varchar(40), Primary Key (ID)) ENGINE = MyISAM;
O código acima, criou uma tabela chamada usuarios, contendo os seguintes campos: nome (do tipo varchar com no máximo 40 caracteres), email (do tipo varchar com no máximo 40 caracteres), login (do tipo varchar com no máximo 30 caracteres), senha (do tipo varchar com no máximo 40 caracteres), e o campo id_usuario (do tipo INT, e com auto incremento.Usaremos o padrão id_ + nome da tabela para facilitar quando precisarmos fazer referencias a outras tabelas)
Agora segue uma pequena explicação sobre cada um dos campos.
- Campo ‘nome’– Armazenará o nome digitado no campo ‘nome’ do formulário (Esse não pode ser nulo) a restrição será aplicada via php.
- Campo ‘email’– Armazenará o nome digitado no campo ‘email ‘ do formulário (Esse campo não pode se repetir e não pode ser nulo Na tela de login vamos usar tanto email quanto login para validar se usuário existe) a restrição será aplicada via php.
- Campo ‘login’– Armazenará o nome digitado no campo ‘login’ do formulário (Esse campo não pode se repetir e não pode ser nulo) a restrição será aplicada via php.
- Campo ‘senha’– Armazenará o valor da variável senha
- Campo ‘id_usuario’ – Armazena um código único de usuário, gerado cada vez que alguém se cadastra, dando identidade única a cada login, usaremos o padrão id_ + nome da tabela para facilitar o trabalho quando precisarmos referenciar tabelas pelo id (Esse código não se repete, e não pode ser alterado, podendo causar falhas como invalidez das contas devido ao compartilhamento de ids)
Criando o Formulário de cadastro
Agora vamos criar o nosso formulário html. Veremos como melhorar a aparência através de css em outro post que estará relacionado abaixo.
Vamos ao código:
<!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8"> <title>infWeb</title> <script> </script> </head> <body> <form method="POST" action="cadastro.php"> <label>Nome:</label><input type="text" name="nome" id="nome"><br> <label>E-mail:</label><input type="text" name="email" id="email"><br> <label>Login:</label><input type="text" name="login" id="login"><br> <label>Senha:</label><input type="password" name="senha" id="senha"><br> <input type="submit" value="Cadastrar" id="cadastrar" name="cadastrar"> </form> </body> </html>
Atenção para um ponto importante dessa página:
Estamos utilizando o método post, para o envio dos dados para a página php. Você também pode utilizar o GET, porém, o método POST é mais seguro no envio das informações, já que o métod GET passa os valores dos campos como parâmetros pela URL.
Criando o cadastro.php
Agora vamos criar a página cadastro.php, essa página ira tratar os dados inseridos no formulário de cadastro e inseri-los na sua tabela no banco de dados.
Vamos ao código:
<?php $nome = $_POST['nome']; $email = $_POST['email']; $login = $_POST['login']; $senha = MD5($_POST['senha']); //Validar se nome foi informado if($nome == "" || $nome == null){ echo"<script language='javascript' type='text/javascript'>alert('O Nome deve ser preenchido');window.location.href='cadastro.html';</script>"; die(); } //Validar se email foi informado if($email == "" || $email == null){ echo"<script language='javascript' type='text/javascript'>alert('O E-mail deve ser preenchido');window.location.href='cadastro.html';</script>"; die(); } //Validar se login foi informado if($login == "" || $login == null){ echo"<script language='javascript' type='text/javascript'>alert('O Login deve ser preenchido');window.location.href='cadastro.html';</script>"; die(); } //Validar se senha foi informada //Obs: como a variavel $senha recebe o conteudo criptografado, ele numca estará vazio, então lemos o que foi informado no campo if($_POST['senha'] == "" || $_POST['senha'] == null){ echo"<script language='javascript' type='text/javascript'>alert('A senha deve ser informada');window.location.href='cadastro.html';</script>"; die(); } //Se não houve nenhum aviso $connect = mysql_connect('nome_do_servidor','nome_do_usuario','senha_do_usuario'); $db = mysql_select_db('nome_do_banco'); // Verifica se login ou email já existe $query_select = "SELECT login FROM usuarios WHERE login = '$login' or email = '$email' "; $select = mysql_query($query_select,$connect); $array = mysql_fetch_array($select); $logarray = $array['login']; //Se existir dispara aviso if($logarray == $login){ echo"<script language='javascript' type='text/javascript'>alert('Esse login já existe');window.location.href='cadastro.html';</script>"; die(); }else{ //Se não existir cria $query = "INSERT INTO usuarios (nome,email,login,senha) VALUES ('$nome','$email','$login','$senha')"; $insert = mysql_query($query,$connect); if($insert){ echo"<script language='javascript' type='text/javascript'>alert('Usuário cadastrado com sucesso!');window.location.href='login.html'</script>"; }else{ echo"<script language='javascript' type='text/javascript'>alert('Não foi possível cadastrar esse usuário');window.location.href='cadastro.html'</script>"; } } ?>
Criando o formulário de login
Com a página de cadastro criada, vamos agora ao formulário de login, que fará o envio das informações para uma página php que verificará a existência desse usuário.
Vamos ao código:
<!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8"> <title>infWeb</title> <script> </script> </head> <body> <form method="POST" action="login.php"> <label>Login:</label><input type="text" name="login" id="login"><br> <label>Senha:</label><input type="password" name="senha" id="senha"><br> <input type="submit" value="entrar" id="entrar" name="entrar"><br> <a href="cadastro.html"><input type="button" value="Cadastrar-se" /></a> </form> </body> </html>
Criando o login.php
Essa página será responsável por tratar as informações inseridas na página de login e verificar se o usuário inseriu as informações corretas, e logo em seguida redirecioná-lo.
<?php $login = $_POST['login']; $entrar = $_POST['entrar']; $senha = md5($_POST['senha']); $connect = mysql_connect('nome_do_servidor','nome_do_usuario','senha_do_usuario'); $db = mysql_select_db('nome_do_banco'); if (isset($entrar)) { $query_select = "SELECT nome FROM usuarios WHERE login = '$login' or email = '$login' "; $select = mysql_query($query_select,$connect); $array = mysql_fetch_array($select); $nome = $array['nome']; if (mysql_num_rows($select)<=0){ echo"<script language='javascript' type='text/javascript'>alert('Login e/ou senha incorretos');window.location.href='login.html';</script>"; die(); }else{ setcookie("login",$login); setcookie("nome",$nome); header("Location:main.php"); } } ?>
Criando a index.php
Agora criaremos a página main.php , que terá duas partes , uma parte pública, e outra restrita.
<?php $nome_cookie = $_COOKIE['nome']; if(isset($login_cookie)){ echo"Bem-Vindo, $nome_cookie <br>"; echo"Essas informações <font color='red'>PODEM</font> ser acessadas por você"; }else{ echo"Bem-Vindo, convidado <br>"; echo"Essas informações <font color='red'>NÃO PODEM</font> ser acessadas por você"; echo"<br><a href='login.html'>Faça Login</a> Para ler o conteúdo"; } ?>
Pronto, agora você já tem um simples sistema de cadastro e login para usar no seu projeto, lembrando que isso é apenas o básico e podem ser utilizadas várias outras técnicas para validação de login e segurança.