Cadastro e login em PHP


Autor/fonte: Saulo José Neco Capistrano
E-mail/Url: http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=7779
Tags: [ cadastro ] [ login ]



Digg del.icio.us

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.: 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 utiliza o PHPTriad, primeiramente antes de se fazer qualquer coisa deve-se iniciar o servidor apache e o mysql, já para quem utiliza o xampp não precisa iniciar nada. Vamos lá então.

Criação da tabela no banco de dados

Primeiramente abra seu browser e digite o endereço:

http://localhost/phpmyadmin

Feito isso a página admin do mysql irá se abrir, e é lá onde iremos criar nosso banco de dados. Iremos chamar nosso banco de dados de USUARIOS (não use caixa alta na criação do banco, esse é apenas um recurso que estou utilizando para dar ênfase ao que iremos fazer).

No campo criar banco de dados digite o nome "usuarios" e assim crie o banco, não será preciso alterar o campo collation. Depois de termos criado nosso banco iremos criar uma tabela dentro do banco, que também chamaremos de "usuarios".

Vá em criar tabela no novo banco de dados e digite o nome "usuarios", depois em número de arquivos digite 6, após feito isso clique no botão executar. Pronto, criamos o banco "usuarios" e dentro dele criamos a tabela "usuarios", agora vamos popular nossa tabela. Os campos serão:

CREATE TABLE `usuarios` (
   `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
   `nome` VARCHAR( 150 ) NOT NULL ,
   `login` VARCHAR( 50 ) NOT NULL ,
   `senha` VARCHAR( 15 ) NOT NULL ,
   `senha2` VARCHAR( 15 ) NOT NULL ,
   `mail` VARCHAR( 100 ) NOT NULL ,
   UNIQUE (`login` ,`mail`)
) ENGINE = MYISAM ;

Pronto, aqui terminamos nossa primeira parte, todos os dados do nosso cadastro e login serão consultados ou enviados através desta tabela.

Criação da conexão com o banco de dados (conectar.php)

É necessário dizer que temos dados que serão enviados ou consultados diretamente através do nosso banco de dados, então como iremos fazer isso? Como iremos consultar o nosso banco de dados simplesmente dizendo: "ei banco usuarios, aí na sua tabela usuarios tem o cadastro do saulo capistrano?".

A resposta é sim! É justamente isso que faremos, iremos perguntar ao banco se ele tem todas as informações que queremos e para isso criaremos uma página chamada conectar.php, essa página não irá aparecer aos olhos do usuário, ela simplesmente será uma espécie de "ponte", onde a página de cadastro ou a página de login utilizará para ter acesso ao banco de dados. Vamos então ao script da nossa página conectar.php.

<?
//Estou supondo que todos os dados estão sendo criados
//na forma padrão do mysql, usuário padrão, senha padrão e host padrão
$host = "localhost"; //Local onde será feito a busca
$user = "root"; //Usuário
$senha = ""; //No caso padrão não é necessário colocar uma senha.
$dbname = "usuarios";

// Aqui fazemos a conexão ao nosso banco de dados
mysql_connect($host, $user, $senha) or die("Não foi possível conectar-se com o banco de dados");

//Aqui estamos selecionando o banco de dados que queremos
mysql_select_db($dbname)or die("Não foi possível conectar-se com o banco de dados");
?>

Não esqueça de salvá-lo como o nome conectar.php.

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.

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

Agora que criamos nosso cadastro, é lógico que queremos entrar na página sugerida, então temos que fazer um login para termos acesso aos privilégios que só um usuário cadastrado deve ter, vamos ao nosso login.

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

include ("conectar.php"); // Olha aqui nossa conexão onde irá funcionar mais uma vez

$login = $_POST['login']; // Esta variável é primordial para que possa ser feita a busca no banco  
$senha = $_POST['senha']; // Idem anterior

//faz a confirmação de login e senha no banco
$logar = mysql_query("SELECT * FROM usuarios WHERE login='$login' AND senha='$senha'") or die("erro ao selecionar");

if (strlen($senha) < 1) //Aqui verificamos se existe senha e login do usuário em questão
   echo '<p align="center">Senha ou apelido não conferem<BR></p>'; //Mensagem de erro para o caso dos campos serem inválidos
elseif ( mysql_num_rows($logar) >0 ) {
   header("location:index.php");
} else {
   echo '<p align="center">Senha ou apelido não conferem<BR>'; // Idem anterior
}
?>
<html><title>login</title>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td bgcolor="#CC3300"> </td>
  </tr>
</table>
<p> </p>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td bgcolor="#000000"> </td>
  </tr>
</table>
<p>Faça seu Login!</p>
<form action="login.php" name="cadastro" method="post"><br>
  <br>
Login: <input type="text" name="login"><br><br>
Senha: <input type="password" name="senha"><br><br>
<input type="submit" value="enviar">
</form>
</body>
</html>

index.php ou index.html

Depois de se cadastrar e de fazer login, é obvio que temos que ter alguma página para acessar, então vamos lá. Vamos salvar a página como index.html, mas também poderíamos salvá-la como index.php.

<!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">
<!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-equiv="Content-Type" content="text/html; charset=iso-8859-1"
/>
<!-- Scpript desenvolvido por Saulo Capistrano em 25/01/2008-->
<title>Home</title>
</head>
<body>
<p style="font-size:8pt; font-family:Tahoma; color:blue;
font-weight:bold;"> </p>
<table width="100%" border="0">
  <tr>
    <td bgcolor="#CC3300"> </td>
  </tr>
  <tr>
    <td> </td>
  </tr>
  <tr>
    <td bgcolor="#000000"> </td>
  </tr>
  <tr>
    <td bgcolor="#E5E5E5">Parabéns você efetuou seu login
com sucesso </td>
  </tr>
  <tr>
    <td bgcolor="#E5E5E5"> </td>
  </tr>
  <tr>
    <td bgcolor="#E5E5E5"> </td>
  </tr>
</table>
</body>
</html>

Obs.: Não criei na página index um botão para sair porque senão teria que criar uma outra página para retornar à ela, isso fica por conta de vocês.

É isso, espero que eu tenha me saido bem nessa estréia e que todos possam tirar o máximo de proveito deste artigo. Não exitem em mandar sugestões ou dicas, podem criticar, pois a crítica é uma boa forma de aprendizagem também.




Enviado por xKuRt em 05/06/2008 às 11:16


Itens relacionados

Criando um simples sistema de autenticação de usuários
Sistema de autenticação completo
Sistema de login com HTTP AUTH
Autenticação de usuário com banco de dados e cookies
Simples sistema de login sem Banco de dados
Sistema de cadastro em Banco de dados
Extrair usuário e senha de uma URL
Protegendo o acesso a uma página com login e senha
Código de login em PHP passo a passo
Evitando cadastrar dados repetidos

Listar todos itens relacionados

Avaliação

Avaliação desta publicação: 10.00; Total de avaliações: 2


Avaliar:


A avaliação de publicações é restrita a membros cadastrados e logados no nosso site.



Comentários

AvatarEnviado por nginamau em 02/11/2009 às 18:07

esta dizendo que nao foi possivel conectar se a base de dados oque faso?
progrma_virtual@hotmail.com
eu sou seu usario com um username : nginamau

--
Virtual da net


Envio de comentário:




  

Quarta, 22 de Outubro de 2014




Top 5 membros

Últimos membros online

Últimos membros cadastrados



Capa do livro
Desvendando a Computação Forense


Capa do livro
Python e Django - Desenvolvimento Ágil de Aplicações Web


Capa do livro
Desenvolvendo Para Web Usando o Visual Studio 2008





Hostnet

IMD