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

Extrair usuário e senha de uma URL
Sistema de login com senha criptografada
Sistema de cadastro em Banco de dados
Sistema de login com HTTP AUTH
Criando um simples sistema de autenticação de usuários
Sistema de login com nome de usuário ou e-mail
Simples sistema de login sem Banco de dados
Autenticação de usuário com banco de dados e cookies
Protegendo o acesso a uma página com login e senha
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:




  

Sexta, 22 de Agosto de 2014




Top 5 membros

Últimos membros online

Últimos membros cadastrados



Capa do livro
Construindo Sites com CSS e (X)HTML


Capa do livro
Certificação Linux LPI: Rápido e Prático - Guia de Referência


Capa do livro
Certificação Linux LPI: Rápido e Prático - Guia de Referência





Hostnet

IMD