Sistema de Cadastro PHP

3 participantes

Wiz-Khalifa Wiz-Khalifa  • 27.05.16 1:22

Sistema de Cadastro PHP Empty Sistema de Cadastro PHP 27.05.16 1:22

Vamos ao tutorial!
 

Tomo por início que você já tenha um banco de dados MySQL disponível, passamos então para criação da tabela necessária para o armazenamento dos dados referente aos usuários.

Eu utilizei o gerenciador SQL phpMyAdmin, digitando e executando o código abaixo no campo de consulta SQL do gerenciador.
- bancodedados.sql

Código:
CREATE tab[b][/b]le usuarios(
    usuario_id int(5) NOT NULL auto_increment,
    nome varchar(50) NOT NULL default '',
    sobrenome varchar(50) NOT NULL default '',
    email varchar(100) NOT NULL default '',
    usuario varchar(32) NOT NULL default '',
    senha varchar(32) NOT NULL default '',
    info text NOT NULL,
    nivel_usuario enum('0','1','2') NOT NULL default '0',
    data_cadastro datetime NOT NULL default '0000-00-00 00:00:00',
    data_ultimo_login datetime NOT NULL default '0000-00-00 00:00:00',
    ativado enum('0','1') NOT NULL default '0',
    PRIMARY KEY  (usuario_id)
) ENGINE = MYISAM CHARACTER SET latin1 COLLATE latin1_general_ci COMMENT = '';

Agora criaremos o arquivo de conexão com o banco de dados.

- config.php


Código:
<?php


Código:
[size=11] [/size]
[size=11][code]define([/code]
[code]'BD_USER'[/code]
[code], [/code]
[code]'usuário de banco de dados'[/code]
[code]);[/code][/size]
[size=11][code]define([/code]
[code]'BD_PASS'[/code]
[code], [/code]
[code]'senha  do banco de dados'[/code]
[code]);[/code][/size]
[size=11][code]define([/code]
[code]'BD_NAME'[/code]
[code], [/code]
[code]'nome do seu banco de dados'[/code]
[code]);[/code][/size]
[size=11] [/size]
[size=11][code]mysql_connect([/code]
[code]'localhost'[/code]
[code], BD_USER, BD_PASS);[/code][/size]
[size=11][code]mysql_select_db(BD_NAME);[/code][/size]
[size=11] [/size]
[size=11][code]?>
[/code][/size]


O próximo passo é montarmos nosso formulário de cadastro que irá popular a tabela que criamos mais acima.
- formulario_cadastro.php

Código:
<!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" />
<title>Formulário Cadastro</title>
</head>
 
<body>
 
<form name="cadastro" method="post" action="cadastrar.php">
 
Nome
<input name="nome" type="text" id="nome" value="<?php echo $nome; ?>" /><br />
 
Sobrenome
<input name="sobrenome" type="text" id="sobrenome" value="<?php echo $sobrenome; ?>" /><br />
Email
 
<input name="email" type="text" id="email" value="<?php echo $email; ?>" /><br />
Nome de Usuário
 
<input name="usuario" type="text" id="usuario" value="<?php echo $usuario; ?>" /><br />
 
+ informações sobre você
 
<textarea name="info" id="info"><?php echo $info; ?></textarea> <br />
 
<input type="submit" name="Submit" value="Enviar" /> <br />
 
</form>
 
</body>
</html>



De nada adianta este formulário se não tivermos o arquivo que recebe os dados enviados, o arquivo responsável por este recebimento será o que vamos ver mais abaixo.

- cadastrar.php
Código:
<?php
 
include "config.php";
 
$nome = trim($_POST['nome']);
$sobrenome  = trim($_POST['sobrenome']);
$email = trim($_POST['email']);
$usuario = trim($_POST['usuario']);
$info = trim($_POST['info']);
 
/* Vamos checar algum erro nos campos */
 
if ((!$nome) || (!$sobrenome) || (!$email) || (!$usuario)){
 
    echo "ERRO: <br /><br />";
 
    if (!$nome){
 
        echo "Nome é requerido.<br />";
 
    }
 
    if (!$sobrenome){
 
        echo "Sobrenome é requerido.<br /> <br />";
 
    }
 
    if (!$email){
 
        echo "Email é um campo requerido.<br /><br />";
 
    }
 
    if (!$usuario){
 
        echo "Nome de Usuário é requerido.<br /><br />";
 
    }
 
    echo "Preencha os campos abaixo: <br /><br />";
 
    include "formulario_cadastro.php";
 
}else{
 
    /* Vamos checar se o nome de Usuário escolhido e/ou Email já existem no banco de dados */
 
    $sql_email_check = mysql_query(
 
        "SELECT COUNT(usuario_id) FROM usuarios WHERE email='{$email}'"
 
        );
 
    $sql_usuario_check = mysql_query(
 
        "SELECT COUNT(usuario_id) FROM usuarios WHERE usuario='{$usuario}'"
 
        );
 
    $eReg = mysql_fetch_array($sql_email_check);
    $uReg = mysql_fetch_array($sql_usuario_check);
 
    $email_check = $eReg[0];
    $usuario_check = $uReg[0];
 
    if (($email_check > 0) || ($usuario_check > 0)){
 
        echo "<strong>ERRO</strong>: <br /><br />";
 
        if ($email_check > 0){
 
            echo "Este email já está sendo utilizado.<br /><br />";
 
            unset($email);
 
        }
 
        if ($usuario_check > 0){
 
            echo "Este nome de usuário já está sendo
                 utilizado.<br /><br />";
 
            unset($usuario);
 
        }
 
        include "formulario_cadastro.php";
 
    }else{
 
        /* Se passarmos por esta verificação ilesos é hora de
        finalmente cadastrar os dados. Vamos utilizar uma função para gerar a senha de
        forma randômica*/
 
        function makeRandomPassword(){
 
            $salt = "abchefghjkmnpqrstuvwxyz0123456789";
            srand((double)microtime()*1000000);
            $i = 0;
 
            while ($i <= 7){
 
                $num = rand() % 33;
                $tmp = substr($salt, $num, 1);
                $pass = $pass . $tmp;
                $i++;
 
            }
 
            return $pass;
 
        }
 
        $senha_randomica   =  makeRandomPassword();
        $senha = md5($senha_randomica);
 
        // Inserindo os dados no banco de dados
 
        $info = htmlspecialchars($info);
 
        $sql = mysql_query(
 
                "INSERT INTO usuarios
                (nome, sobrenome, email, usuario, senha, info, data_cadastro)
 
                VALUES
                ('$nome', '$sobrenome', '$email', '$usuario', '$senha', '$info', now())")
 
                or die( mysql_error()
 
                );
 
        if (!$sql){
 
            echo "Ocorreu um erro ao criar sua conta, entre em contato.";
 
        }else{
 
            $usuario_id = mysql_insert_id();
 
            // Enviar um email ao usuário para confirmação e ativar o cadastro!
 
            $headers = "MIME-Version: 1.0\n";
            $headers .= "Content-type: text/html; charset=iso-8859-1\n";
            $headers .= "From: Teu Domínio - Webmaster<email@teusite.com.br>";
 
            $subject = "Confirmação de cadastro - teusite.com.br";
            $mensagem  = "Prezado  {$nome} {$sobrenome},<br />
            Obrigado pelo seu cadastro em nosso site, <a href='http://www.teusite.com.br'>
            http://www.teusite.com.br</a>!<br /> <br />
 
            Para confirmar seu cadastro e ativar sua conta em nosso site, podendo acessar à
            áreas exclusivas, por favor clique no link abaixo ou copie e cole na barra de
            endereço do seu navegador.<br /> <br />
 
            <a href='http://www.teusite.com.br/ativar.php?id={$usuario_id}&code={$senha}'>
            http://www.teusite.com.br/ativar.php?id={$usuario_id}&code={$senha}
            </a>
 
            <br /> <br />
            Após a ativação de sua conta, você poderá ter acesso ao conteúdo exclusivo
            efetuado o login com os seguintes dados abaixo:<br > <br />
 
            <strong>Usuario</strong>: {$usuario}<br />
            <strong>Senha</strong>: {$senha_randomica}<br /> <br />
 
            Obrigado!<br /> <br />
 
            Webmaster<br /> <br /> <br />
            Esta é uma mensagem automática, por favor não responda!";
 
            mail($email, $subject, $mensagem, $headers);
 
            echo "Foi enviado para seu email - ( ".$email." ) um pedido de
            confirmação de cadastro, por favor verifique e sigas as instruções!";
 
        }
 
    }
 
}
 
?>

Como podemos ver no arquivo acima, ao cadastrar-se, automaticamente é enviado uma mensagem de confirmação de cadastro para a conta de email que o usuário digitou no formulário de cadastro, esta mensagem conterá instruções de como proceder. Através de um link nesta mensagem ele executará um arquivo que ativa definitivamente sua conta e só a partir desta ativação que o membro poderá acessar a área restrita.
- ativar.php

Código:
<?php
 
include "config.php";
 
$usuario_id = $_REQUEST['id'];
$senha = $_REQUEST['code'];
 
$sql = mysql_query(
 
            "UPDATE usuarios SET ativado='1'
            WHERE usuario_id='{$usuario_id}'
            AND senha='{$senha}'"
 
            );
 
$sql_doublecheck = mysql_query(
 
                       "SELECT * FROM usuarios
                       WHERE usuario_id='{$usuario_id}'
                       AND senha='{$senha}'
                       AND ativado='1'"
 
                       );
 
$doublecheck = mysql_num_rows($sql_doublecheck);
 
if ($doublecheck == 0){
 
    echo "<strong>Sua conta não pode ser ativada!</strong>";
 
}elseif ($doublecheck > 0){
 
    echo "<strong>Seu cadastro foi ativado com sucesso!</strong><br />
         Você pode fazer o login logo abaixo!<br /><br />";
 
    include "formulario_login.html";
 
}
 
?>




Já estamos cadastrando usuários e ativando suas contas corretamente e sem problemas, mas para que cadastrar um usuário se pelo menos não dermos alguns privilégios para este membro? Fazemos assim então, ao efetuar o login o usuário cadastrado terá acesso à uma área restrita, mas para isso precisamos de um formulário de login simples, então vamos lá.
- formulario_login.html

Código:
<!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" />
<title>Login</title>
</head>
 
<body>
 
Login <br /><br />
 
<form action="verifica_usuario.php" method="post" name="" id="">
 
Usuário<br />
<input name="usuario" type="text" id="usuario" /><br />
 
Senha<br />
<input name="senha" type="password" id="senha" /><br /><br />
 
<input type="submit" name="Submit" value="Enviar" / >
 
</form>
 
</body>
 
</html>




Não adianta disponibilizar um formulário de login se não tivermos um arquivo para receber os dados enviados e efetuar uma verificação se realmente são dados de um usuário cadastrado ou alguém tentando logar sem as devidas permissões, então continuamos.

- verifica_usuario.php
Código:
<?php
 
session_start();  // Inicia a session
 
include "config.php";
 
$usuario = $_POST['usuario'];
$senha = $_POST['senha'];
 
if ((!$usuario) || (!$senha)){
 
    echo "Por favor, todos campos devem ser preenchidos! <br /><br />";
 
    include "formulario_login.html";
 
}else{
 
    $senha = md5($senha);
 
    $sql = mysql_query(
 
                 "SELECT * FROM usuarios
                 WHERE usuario='{$usuario}'
                 AND senha='{$senha}'
                 AND ativado='1'"
 
                 );
 
    $login_check = mysql_num_rows($sql);
 
    if ($login_check > 0){
 
        while ($row = mysql_fetch_array($sql)){
 
            foreach ($row AS $key => $val){
 
                $$key = stripslashes( $val );
 
            }
 
            $_SESSION['usuario_id'] = $usuario_id;
            $_SESSION['nome'] = $nome;
            $_SESSION['sobrenome'] = $sobrenome;
            $_SESSION['email'] = $email;
            $_SESSION['nivel_usuario'] = $nivel_usuario;
 
            mysql_query(
 
                        "UPDATE usuarios SET data_ultimo_login = now()
                        WHERE usuario_id ='{$usuario_id}'"
 
                        );
 
            header("Location: area_restrita.php");
 
        }
 
    }else{
 
        echo "Você não pode logar-se! Este usuário e/ou senha não são válidos!<br />
             Por favor tente novamente!<br />";
 
        include "formulario_login.html";
 
    }
 
}
 
?>

Percebemos acima que caso o usuário não esteja cadastrado no banco de dados ou caso ele insira dados errados nos campos do formulário de login, ele não consegue entrar na área restrita, mas conseguir validar terá acesso à tão desejada área restrita. Vamos então fazer um arquivo de exemplo que representará uma página de acesso restrito.

- area_restrita.php

Código:
<?php
 
session_start(); // Inicia a session
include "functions.php"; // arquivo de funções.
session_checker(); // chama a função que verifica se a session iniciada da acesso à página.
 
echo "Bem vindo <strong>". $_SESSION['nome'] ." ". $_SESSION['sobrenome'] ."</strong>!<br />
     Você está acessando área restrita para usuários cadastrados!
     <br /><br />";
 
echo "Seu nível de usuário é <strong>". $_SESSION['nivel_usuario']."</strong>.
     <br />Com esse nível, você tem permisão de acesso às
     seguintes áreas: <br /><br />";
 
if ($_SESSION['nivel_usuario'] == 0){
 
    echo "- <strong>Forum</strong><br />Abrir tópicos, postar em tópicos
         de terceiros.<br /><br />";
 
}
 
if ($_SESSION['nivel_usuario'] == 1){
 
    echo "- <strong>Forum</strong><br />Administração -
         Acesso total <br /><br />";
 
}
 
/* Não colocarei representações para outros níveis de acesso, mas fica entendido que o
limite de níveis de acesso quem define é você*/
 
echo "<a href="logout.php">Sair</a>";
 

Neste arquivo acima eu mencionei mais dois arquivos que ainda não criamos. O primeiro arquivo conterá uma função de verificação como eu comentei no início do script acima. Vejamos ele.
- functions.php

Código:
<?php
 
function session_checker(){
 
    if (!isset($_SESSION['usuario_id'])){
 
        header ("Location:formulario_login.html");
        exit();
 
    }
 
}
 



Ops! No arquivo exemplo que representa a área restrita, eu coloquei no final uma opção para sair desta área, sendo assim não posso faltar com minha palavra, por tanto vamos cria-la, assim sempre que o usuário sair utilizando esta opção só poderá acessar a área restrita se efetuar o login novamente. Acredito que não teremos problema algum em entender o funcionamento.

- logout.php

Código:
<?php
 
session_start();
 
if (!isset($_REQUEST['logmeout'])){
 
    echo "Você realmente deseja sair da área restrita?<br />";
    echo "<a href="logout.php?logmeout">Sim</a> | ";
    echo "<a href="javascript:history.go(-1)">Não</a>";
 
}else{
 
    session_destroy();
 
    if (!session_is_registered('nome')){
 
        echo "<strong>Você não está mais logado em nosso site!</strong>";
        echo "<br /><br /><strong>Login:</strong><br /><br />";
 
       include "formulario_login.html";
 
    }
 
}
 
?>

hummm, já ia me esquecendo, como vamos disponibilizar uma opção para gerar nova senha, onde seria o melhor lugar para colocarmos um link para chamar o arquivo que dará início da criação de uma nova senha se não no próprio arquivo .html que utilizamos para efetuar o login.
Então que tal colocarmos abaixo do formulário de login?
Façamos o seguinte então, adicione essas linhas logo abaixo no arquivo formulario_login.html bem abaixo do botãoEnviar:
?


1
Código:
<br /><a href=
Código:
"formulario_senha_perdida.html"
Código:
>- Não lembra a  sua senha?</a>


Quase no final, agora resta apenas criarmos o formulário para requisição de nova senha para os casos de esquecimento ou perda que será chamado pelo link que criamos acima e também o arquivo que recebe os dados e envia a nova senha para o email cadastrado do usuário.

Vamos lá então!
- formulario_senha_perdida.html

Código:
<!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" />
<title>Formulário Nova Senha</title>
</head>
 
<body>
 
<form name="form1" method="post" action="">
 
Por favor digite o seu email que está cadastrado em nosso banco de dados;<br />
 
<input name="email" type="text" id="email" />
<input name="recupera" type="hidden" id="recupera" value="recupera" />
 
<input type="submit" name="Submit" value="Gerar Senha" />
 
</form>
 
</body>
 
</html>


Para completar, o arquivo responsável em receber os dados do formulário acima, onde baseando-se em uma verificação de resultado afirmativo da existência deste email no banco de dados passa a gerar uma nova senha e envia-la para o mesmo email cadastrado, caso o email não exista, não precisa nem dizer o que acontece, sendo assim vamos ao que interessa.

- gerar_nova_senha.php

Código:
<?php
 
include "config.php";
 
$recupera  = $_POST['recupera'];
$email = $_POST['email'];
 
switch ($recupera){
 
    case "recupera" :
 
        recupera_senha($email);
        break;
 
    default :
 
        include "formulario_senha_perdida.html";
        break;
 
}
 
function recupera_senha($email){
 
    if (!isset($email)){
 
        echo "Você esqueceu de preencher seu email.<br />
             <strong>Use o mesmo email que utilizou em seu cadastro.</strong><br /><br />";
 
        include "formulario_senha_perdida.html";
 
        exit();
 
    } // Checando se o email informado está cadastrado
 
    $sql_check = mysql_query("SELECT * FROM usuarios WHERE email='{$email}'");
    $sql_check_num = mysql_num_rows($sql_check);
 
    if ($sql_check_num == 0){
 
        echo "Este email não está cadastrado em nosso banco de dados.<br /><br />";
 
        include "formulario_senha_perdida.html";
 
        exit();
 
    }
 
    // Se tudo OK vamos gerar uma nova senha e enviar para o email do usuário!
 
    function makeRandomPassword(){
 
        $salt = "abchefghjkmnpqrstuvwxyz0123456789";
        srand((double)microtime()*1000000);
        $i = 0;
 
        while ($i <= 7){
 
            $num = rand() % 33;
            $tmp = substr($salt, $num, 1);
            $pass = $pass . $tmp;
            $i++;
 
        }
 
        return $pass;
 
    }
 
    $senha_randomica = makeRandomPassword();
    $senha = md5($senha_randomica);
    $sql = mysql_query(
 
                       "UPDATE usuarios SET senha='{$senha}'
                       WHERE email ='{$email}'"
 
                       );
 
    $headers = "MIME-Version: 1.0\n";
    $headers .= "Content-type: text/html; charset=iso-8859-1\n";
    $headers .= "From: Teu Domínio - Webmaster<email@teusite.com.br>";
 
    $subject = "Sua nova senha em teusite.com.br";
 
    $message = "Olá, redefinimos sua senha.<br /><br />
               <strong>Nova Senha</strong>: {$senha_randomica}<br /><br />
 
               <a href='http://www.teusite.com/formulario_login.html'>
               http://www.teusite.com/formulario_login.html
               </a><br /><br />
               Obrigado!<br /><br />
               Webmaster<br /><br /><br />
 
               Esta é uma mensagem automática, por favor não responda!";
 
                mail($email, $subject, $message, $headers);
 
                echo "Sua nova senha foi gerada com sucesso e enviada para o seu email!<br />
                     Por favor verifique seu email!<br /><br />";
 
                include "formulario_login.html";
 
}
 
?>



Bom... acho que era isso...
Caso eu possa ajudar e estiver dentro do escopo deste tutorial eu ajudarei com prazer.

Cadastro Demo : Aqui
Acesso Demo : Aqui

Download Arquivos do Tutorial : Aqui

Creditos: Sistema Basico = Aqui

Anonymous Convidado  • 27.05.16 1:43

ThuG - LovE ThuG - LovE  • 27.05.16 1:52

Sistema de Cadastro PHP Empty Re: Sistema de Cadastro PHP 27.05.16 1:52

TomJack escreveu:Muito bom e útil, obrigado por compartilhar conosco.

Pesc Pesc  • 27.05.16 2:22

Sistema de Cadastro PHP Empty Re: Sistema de Cadastro PHP 27.05.16 2:22

TomJack escreveu:Muito bom e útil, obrigado por compartilhar conosco.
Permissões neste sub-fórum
Não podes responder a tópicos

BH Servers

Recomendamos a BH Servers com proteção DDOS gratuita em Cloud Server de alta performance. Entrega imediata.