Cadastro e login em PHP

Um artigo simples de cadastro e login de usuários com a página inicial para onde o login nos levará.

[ Hits: 75.993 ]

Por: Saulo José Neco Capistrano em 04/06/2008


Criação da página de cadastro (cadastrar.php)



Bom, agora que criamos nosso arquivo de conexão com o banco de dados iremos criar nossa página de cadastro.

<?
/***************************************************************
Script de estudo criado Por Saulo Capistrano em 25/01/2008
****************************************************************/


if($_POST) {
   include("conectar.php");// Olha aqui onde anda nossa conexão
  
   $nome = $_POST["nome"]; // Criamos aqui as variáveis que irão receber os dados e que então serão enviados para o banco de dados, as variáveis devem ser do tipo post
   $login = $_POST["login"]; // Idem anterior
   $senha = $_POST["senha"]; // Idem anterior
   $senha2 = $_POST["senha2"]; // Idem anterior
   $mail = $_POST["mail"]; // Idem anterior
  
   if (empty($nome)){ // Essa parte código torna o campo obrigatório para que não se possa fazer inserção de dados em branco no banco de dados.
      die("Você deve preencher o Campo nome");
   }

   if (empty($login)){ // Idem anterior
      die("Você deve escolher um login");
   }
  
   if (empty($senha)){ // Idem anterior
      die("Escolha uma senha");
   }
  
   if (empty($senha2)){ // Idem anterior
      die("Você deve confirmar a sua senha");
   }
  
   if (empty($mail)){ // Idem anterior
      die(" Por favor, digite seu email");
   }
      
              
   if ($senha2 != $senha){ // Aqui estamos determinando que se o campo senha e o campo confirmação de senha não sejam iguais, então os dados não serão enviados para o banco.
      echo "<script>alert('Os campos senha e confirmação de senha devem ser idênticos');</script>";// Mensagem de alerta
   }
            
   mysql_query("INSERT INTO usuarios (login, nome, senha, senha2, mail) VALUES ('$login', '$nome', '$senha', '$senha2', '$mail')");    
   echo "Parabéns seu cadastro foi realizado com sucesso";
  //Aqui faremos a inserção dos dados para o banco de dados      
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equ   iv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Cadastro</title></head>

<body>
<table width="100%" border="0">
  <tr>
    <td bgcolor="#FF6600"> </td>
  </tr>
  <tr>
    <td><map name="Map" id="Map">
        <area shape="poly"
coords="16,50,75,54,109,54,151,53,211,51,213,29,133,29,121,20,74,18,29,15,19,13" href="html/index.html" />
    </map></td>
  </tr>
  <tr>
    <td bgcolor="#FFFFFF"><strong>
    <h3> Preencha todos os dados corretamente e depois clique no botão
'Enviar' para fazer seu cadastro . </h3>
    </strong> </td>
  </tr>
  <tr>
    <td bgcolor="#000000">:: Formulário de registro. </td>
  </tr>
  <tr>
    <td bgcolor="#FFFFFF"><br />
          <strong>Novo Usuário.</strong><br />
      
   <table align="left" border="0" bgcolor="#CCCCCC">
    <tr>
      <td>
     <form action="" method="post"><!--Todos os campos dos formulários
devem receber o mesmo nome que as variáveis respectivas, caso contrário
os dados não serão inseridos no banco de dados -->
       <div align="left">
         <!-- Form  ( note que os campos tem o mesmo nome do banco de
dados)-->
         Digite seu nome:<br>
         <input type="text" name="nome">
         <br>
         <br>
         <!-- Esse campo deve retornar uma mensagem de nome inválido, caso já exista um nome igual no banco de dados.-->
         Escolha um login:<br>
         <input type="text" name="login" />
         <br>
         <br>
         <!-- Esse campo deve retornar uma mensagem de erro caso o nome não seja igual e idêntico aos dados do campo anterior a este  -->
         Escolha uma senha:<br>
         <input type="password" name="senha" />
         <br>
         <br>
         <!--Este campo deve aceitar o formato de letras e números --> Confirme sua senha:<br>
         <input type="password" name="senha2">
         <br>
         <br>
         <!--Este campo deve ser idêntico e igual ao campo anterior -->
         Digite seu endereço de email:<br>
         <input type="text" name="mail">
         <br>
         <br>
        
         <input type="submit" value="Enviar" name="enviar" >
      
       </div>
     </form>
       </td>
     </tr>
    </table>
  </td>
</tr>
</table>
  
</body>
</html>

Mais uma vez não esqueça de salvar como cadastro.php, do contrário dará erro.

Página anterior     Próxima página

Páginas do artigo
   1. Cadastro e login de usuários
   2. Criação da conexão com o banco de dados (conectar.php)
   3. Criação da página de cadastro (cadastrar.php)
   4. Criação da página de login (login.php)
   5. index.php ou index.html
Outros artigos deste autor

Sistema de notícias em PHP

Leitura recomendada

Formantando nomes com caracteres especiais em PHP

Usando classes em conexão e consultas à banco de dados em PHP

Compactador de URL utilizando manipulação de diretórios do Linux com PHP

Guia completo do Ocomon no Linux - Módulo cliente, abertura de ocorrência (exclusivo VOL)

Inteligência Artificial com PHP e MySQL (parte I)

  
Comentários
[1] Comentário enviado por rodrigoslom em 04/06/2008 - 18:04h

Olá... encontrei um erro em cadastra.php, com relação a comparação das senhas 1 e 2 digitadas..., coloquei um "else"... fiz a seguinte alteração:
...
if ($senha2 != $senha){
echo "<script>alert('Os campos senha e confirmação de senha devem ser idênticos');</script>";
}
else{
mysql_query("INSERT INTO usuarios (login, nome, senha, senha2, mail) VALUES ('$login', '$nome', '$senha', '$senha2', '$mail')");
echo "Parabéns seu cadastro foi realizado com sucesso";
}
...

[2] Comentário enviado por littlecoder em 05/06/2008 - 10:45h

Bem, vc sabe que não é uma boa pegar valores direto da array post nao sabe? Imagine que alguem queira fazer SQL injection? vc não verifica nada?

if($_POST) {
include("conectar.php");// Olha aqui onde anda nossa conexão

$nome = $_POST["nome"]; // Criamos aqui as variáveis que irão receber os dados e que então serão enviados para o banco de dados, as variáveis devem ser do tipo post
$login = $_POST["login"]; // Idem anterior
$senha = $_POST["senha"]; // Idem anterior
$senha2 = $_POST["senha2"]; // Idem anterior
$mail = $_POST["mail"]; // Idem anterior

[3] Comentário enviado por littlecoder em 05/06/2008 - 10:59h

olha so esse exemplo no google q eh aplicavel a seu cadastro:

@@version (MS)
Version of database and more details for SQL Server. It's a constant. You can just select it like any other column, you don't need to supply table name. Also you can use insert, update statements or in functions.

INSERT INTO members(id, user, pass) VALUES(1, ''+SUBSTRING(@@version,1,10) ,10)

como vc não verifica a validade do input, o cara pode no mínimo ver qual a versão do seu mysql, ai eh so procurar um exploit se exister pra essa versão ... mais cuidado meninos ;-)

[4] Comentário enviado por Ed_slacker em 05/06/2008 - 14:12h

"Olá pessoal, esta é minha estréia com artigos e neste meu primeiro texto mostrarei como se fazer uma página de cadastro de usuários e login. Espero que todos entendam o código, está simples e fácil de entender, divirtam-se.

Obs. 1: Existem pessoas que usam phptriad, outras que usam xampp e outras pessoas usam outros que não vem ao caso falar agora, este artigo serve com certeza para os dois primeiros que citei e também se trata de um artigo ***introdutório para pessoas iniciantes em php***, claro que os mestres saberão utilizá-lo de outra forma em outros ambientes. "

Para quem queria efetuar um artigo introdutório para que pessoas possam ter um ponto de partida e pensar em melhorias, penso que o autor cumpriu com seu objetivo!
Detalhes como proteção contra SQL Injection ou proteção de campos de formulários para negar caracteres especiais (usando JavaScript, por exemplo) são bem vindas, mas não cabem neste artigo. Lembrando que é um artigo introdutório e estes comentários caberiam melhor em um artigo que objetiva fazer sistemas de login e senha em PHP de forma profissional e não amadora.

Meus parabéns pelo artigo.

[5] Comentário enviado por skulldark em 06/06/2008 - 08:38h

Parabéns pela iniciativa Saulo.

littlecoder, você poderia demonstrar como fazer a validação (solução para tal vuln), pois os usuários leigos de PHP/MySQL que lêem este artigo não sabem.

Abraços.
[]s

[6] Comentário enviado por comfaa em 28/10/2008 - 12:57h

muito legal

[7] Comentário enviado por everton3x em 20/04/2009 - 17:11h

Bom o artigo, pois cumpriu com o seu objetivo, conforme comentário do edi_oliver, o qual concordo plenamente.

São não entendi porque colocar a senha e a senha2 no banco de dados? Creio ser totalmente desnecessária a senha2 no banco.

Por fim, fica a sugestão para os "mestres", de escreverem um artigo para ensinar os iniciantes ou os intermediários (como eu) de como se protejer do SQL INJECTION e outras formas de ameaças...

[8] Comentário enviado por saulocapistrano em 20/04/2009 - 18:42h

a questão das duas senhas é para fazer tipo uma "validação" no caso comparando se realmente o cara está criando uma senha e se ele tem certeza que é mesmo a senha que quer, pois as vezes um usuário quando está criando uma senha no ato de digitar o teclado ele erra os caracteres... flw

[9] Comentário enviado por rafaelpensador em 09/12/2009 - 08:23h

Queria saber como fazer com que esse login autentique a cada pagina visitada, porque se nao uma invasão é 100% liberada,

[10] Comentário enviado por palaciolucas em 28/03/2011 - 20:20h

cara muito bem explicado esse seu tutorial eu estava meio enrolado mas agora ta legal vejo que nao é muito complicado.

[11] Comentário enviado por saulocapistrano em 13/04/2011 - 17:34h

Obrigado pelos comentários, afastado a muito tempo, estou voltando agora e tentarei contribuir para a melhora dos meus artigos, e ajudar a quem puder, verei esses erros comentados para ver do que se trata.
Abraço a todos.

[12] Comentário enviado por botinha em 25/05/2011 - 19:47h

gostaria de parabenizar ao amigo pelo excelente artigo. mas tenho uma dúvida de como posso usar o md5 para permitir que a senha fique criptografada. será que o amigo pode me dar um ajuda.

obrigado


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts