Página 1 de 2 12 ÚltimoÚltimo
Resultados 1 a 10 de 11
  1. #1
    Wannabe
    Data de Ingresso
    May 2009
    Localização
    localhost
    Posts
    641

    [PHP] Construindo um sistema simples de Login

    Hi boys and Girls,

    Neste tópico mostrarei como criar um sistema de login simples, porem apartir dele, você pode incrementar niveis de usuários, adicionar usuários, entre outras funções.
    Nele em especial utilizaremos a função session, para verificar se o mesmo está realmente logado, e a função md5() para criptografar a senha do usuário.

    Antes de começar, é interessante você ter um servidor local, caso não saiba como instalar um em sua maquina recomendo este tópico: Instalando um Servidor local e o phpBB3

    Com tudo pronto vamos ao que interessa.

    Entre no seu gerenciador de Banco de Dados MySQL, no meu caso o PHPMyAdmin e crie um novo banco de dados chamado "invaders". Agora vamos criar uma tabela chamada "users_invaders" com apenas 3 colunas:

    A coluna 1 terá os seguintes atributos:

    Campo: id
    Tipo: Inteiro (INT)
    Tamanho: 2
    Índice: Primary
    AutoIncrement: Sim
    Nulo: Sim

    A coluna 2 terá os seguintes atributos:

    Campo: login
    Tipo: Varchar
    Tamanho: 10
    Índice: Unique


    A coluna 3 terá os seguintes atributos:

    Campo: senha
    Tipo: Varchar
    Tamanho: 32

    Após criar as colunas, vamos inserir alguns dados:

    login: admin
    senha:21232f297a57a5a743894a0e4a801fc3 <- MD5 de admin

    login: invaders
    senha:202cb962ac59075b964b07152d234b70 <- MD5 de 123

    Com o banco de dados pronto vamos ao PHP.
    Criaremos 8 páginas, que são: login.php, conexao.php, verifica.php, verifica_login.php, index.php, editar.php, insere_edita.php e sair.php.

    Vamos criar á página conexao.php:

    Código:
    <?php 
    /*
    ############################################
    ### ALLMEIDA - FORUM-INVADERS.COM.BR ######
    ###   allmeida.contato@gmail.com     #####
    #########################################
    conexao.php
    */
    
    $host = "localhost"; //Local onde o MySQL está instalado, no nosso caso no LOCALHOST
    $basededados = "invaders"; // Nome do banco de Dados
    $login = "root"; // Login do MySQL, no EasyPHP o login padrão é "root"
    $senha = ""; // Senha do MySQL, no EasyPHP  não temos senha por padrão, mas nada te impede de colocar.
    
    //Conexão com o Banco de Dados
    $conexao = mysql_connect($host, $login, $senha) or die(mysql_error()); 
    ?>
    Vamos agora para a página verifica.php, está página terá a função de verificar se o usuário está logado, caso não esteja ela retorna para a página de login.

    Código:
    <?php 
    /*
    ############################################
    ### ALLMEIDA - FORUM-INVADERS.COM.BR ######
    ###   allmeida.contato@gmail.com     #####
    #########################################
    verifica.php
    */
    
    require('conexao.php'); //Arquivo de Conexão
    
    session_start(); // Inicia a Seção
    $login = $_SESSION['login'];
    $s= $_SESSION['senha'];
    
    //Interação com a Base de Dados
    mysql_select_db($basededados); 
    $query = "SELECT * FROM users_invaders WHERE login = '$login'"; 
    $mysql = mysql_query($query) or die (mysql_error());
    $linha = mysql_fetch_assoc($mysql);
    
    // Verifica se o Login Existe
    if ($login = $linha['login']){
    	// Verifica se a senha do login é válida
    	if($senha = $linha['senha']){
    		
    		$permitido=1; //se o usuário estiver logado, ele dá a permição pra acessar a página
    		
    	}else{
    		header ("location:login.php");
    	}
    	
    }else{
    	header ("location:login.php");
    }
    
    mysql_free_result($mysql);
    
    ?>
    Na pagina login.php adicione um formulário com o method post e action para "verifica_login.php":

    Código:
    <form id="form1" name="form1" method="post" action="verifica_login.php">
    e dentro deste formulátio crie 1 caixa de texto com o id/nome "login":

    Código:
    <input type="text" name="login" id="login" />
    1 caixa Adicione uma caixa de senha com o id/nome "senha":

    Código:
     <input type="password" name="senha" id="senha" />
    E um botão.

    Eu acho interessante colocar um get que receba provaveis erros ao logar, por exemplo "Usuário incorreto":

    Código:
      <?php
      if (isset($_GET['erro'])){
    	echo $_GET['erro'];
      }?>
    A página verifica_login.php, servirá pra validar o usuário, se o mesmo for válido ele atribui os valores as variaveis do session e redireciona para a index.php, se o login for inválido ele redireciona para login.php informando o erro!

    Código:
    <?php
    /*
    ############################################
    ### ALLMEIDA - FORUM-INVADERS.COM.BR ######
    ###   allmeida.contato@gmail.com     #####
    #########################################
    verifica_login.php
    */
    require("conexao.php");
    
    $login = $_POST['login'];
    $s= $_POST['senha'];
    $senha = md5($s);//Criamos uma hash md5 da senha para ver se "bate" no banco de dados
    session_start();//iniciamos a seção
    
    //Interação com a Base de Dados
    mysql_select_db($basededados); 
    $query = "SELECT * FROM users_invaders WHERE login = '$login'"; 
    $mysql = mysql_query($query) or die (mysql_error());
    $linha = mysql_fetch_assoc($mysql);
    
    // Verifica se o Login Existe
    if ($login = $linha['login']){
    	// Verifica se a senha do login é válida
    	if($senha = $linha['senha']){
    		
    		$_SESSION['login']= $login;//Atribuimos os valores  de login e senha
    		$_SESSION['senha']= $senha;
    		header ("location:index.php");
    	}else{
    		header ("location:login.php?erro=Senha ou Usuário Incorreto");
    	}
    	
    }else{
    	header ("location:login.php?erro=Senha ou Usuário Incorreto");
    }
    
    mysql_free_result($mysql);
    
    ?>
    Na index.php, vamos incluir um link para a pagina sair.php, um link para a página editar, e um bem-vindo pro usuário.

    Depois de ter colocado os links, coloque o seguinte script acima de todo o código:

    Código:
    <?php require("verifica.php");
    if ($permitido =1){ //se tiver permição, ele mostra a página
    
    	?>
    e o fechamento do if na ultima linha:

    Código:
    <?php }//fecha a condição?>
    Para mostrar um "bem-vindo" pro usuário basta usar este código:

    Código:
    <?php echo $_SESSION['login']; ?>
    Na pagina editar.php, vamos criar um form, com method post, com action para insere_edita.php, dentro do form criaremos 1 campo de texto com o nome login e com o valor da variavel $_SESSION['login']:

    Código:
     <input name="login" type="text" id="login" value="<?php echo $_SESSION['login'];?>" />
    1 campo senha com o nome senha:

    Código:
    <input type="password" name="senha" id="senha" />
    E por ultimo um botão.
    Como no index vamos confirmar se o usuário está logado adicionando na primeira linha o script:

    Código:
    <?php require("verifica.php");
    if ($permitido =1){ //se tiver permição, ele mostra a página
    
    	?>
    e o fechamento do if na ultima linha:

    Código:
    <?php }//fecha a condição?>
    E por ultimo um Get também informando erros:

    Código:
      <?php
      if (isset($_GET['erro'])){
    	echo $_GET['erro'];
      }?>
    Na penultima página a insere_edita.php, vamos criar o script que realizará o trabalho de editar os campos:

    Código:
    <?php 
    /*
    ############################################
    ### ALLMEIDA - FORUM-INVADERS.COM.BR ######
    ###   allmeida.contato@gmail.com     #####
    #########################################
    insere_edita.php
    */
    
    require("verifica.php");
    
    if ($permitido =1){
    //variaveis vias post e session
    $login = $_POST['login'];
    $sn = $_POST['senha'];
    $loginantigo = $_SESSION['login'];
    //fim variaveis vias post
    
    $senha = md5($sn); //gerando hash md5 da senha
    
    mysql_select_db($basededados); 
    
    
    // Interação para obter o id e verificar se a senha antiga confere
    $query = "SELECT * FROM users_invaders WHERE login = '$loginantigo'"; 
    $mysql = mysql_query($query) or die (mysql_error());
    $linha = mysql_fetch_assoc($mysql);
    
    $id = $linha['id'];// Pegando o ID
    
    //Atualizando os Dados
    $query = "UPDATE invaders.users_invaders SET login = '$login',
    senha = '$senha' WHERE users_invaders.id ='$id' LIMIT 1 ;"; 
    $mysql = mysql_query($query) or die (mysql_error()); 
    header("location:editar.php");
    }//Fim Permição ?>
    Agora a ultima página, sair.php é página que "destruirá a seção":

    Código:
    <?php 
    /*
    ############################################
    ### ALLMEIDA - FORUM-INVADERS.COM.BR ######
    ###   allmeida.contato@gmail.com     #####
    #########################################
    sair.php
    */
    
    session_start();
    unset ($_SESSION['login']);
    unset ($_SESSION['senha']);
    session_destroy();
    header("location:login.php");
    
    ?>
    Agora é só executar as páginas pelo navegador e ver o sisteminha funcionando. É interessante informar, que este sisteminha não é seguro, ele está vulnerável a SQL (Basta você dar uma arrumadinha) . Criei ele como o intuito de apenas dar uma base para quem não sabia fazer um sistema de login.

    Se quiserem ver ele pronto podem baixa-lo no link abaixo (PS: Fiz bem simples mesmo, pois a intenção era fazer o script php):

    Código:
    http://www.megaupload.com/?d=IVZWX8AC
    Até a proxima,
    Forum-Invaders 8)
    :arrow:

  2. #2
    Wannabe Avatar de areax
    Data de Ingresso
    Sep 2009
    Localização
    Virtual World
    Posts
    773

    Re: [PHP] Construindo um sistema simples de Login

    Vlw compartilhar manow, flw.
    *_________________
    < areax@hotmail.com >
    *------------------------
    *********\*..,__,
    **********\*(oo)______
    ***********.(__)*****)\
    **************||------|| *

  3. #3
    Wannabe Avatar de marcony
    Data de Ingresso
    Feb 2006
    Posts
    502

    Re: [PHP] Construindo um sistema simples de Login

    Isso ai meu jovem!

    Funciona diretinho!

    :arrow:

    Abraços!
    <img src="http://sillyhamsters.film.com/blog/archives/twitter_followme.png"></a>
    Acompanhe as principais notícias de tecnologia também no meu Twitter.
    http://twitter.com/marconyjm
    Abraços!

  4. #4

    Re: [PHP] Construindo um sistema simples de Login

    Facilitando ainda mais
    na hora de verificar o usuário existente pode-se colocar
    .... WHERE login = $login and senha = $senha
    if (mysql_num_rows($sql_verifica = 1)){
    blá blá!
    }else {
    header("Location: saindo.php");
    }

  5. #5
    Administrador Administrador Avatar de souzadc
    Data de Ingresso
    Jan 2005
    Localização
    BA - Salvador Capital City
    Posts
    5.867

    Re: [PHP] Construindo um sistema simples de Login

    Cara,

    Amigo AllMeida,

    Excelente tópico, fácil entendimento e muito bem explicado. Valeu!!!!

    Sem mais!!!!
    :arrow:

    Dúvidas somente no fórum, NÃO respondo via MP's, MSN, Orkut, E-mail e afins. Obrigado!

  6. #6
    Newbie
    Data de Ingresso
    Nov 2009
    Localização
    Campo Grande
    Posts
    43

    Re: [PHP] Construindo um sistema simples de Login

    Ótimo tópico mano.

    Obrigado por compartilhar.
    [''];
    # Expl0it[at]guiadohacker[dot]com[dot]br - Não respondo dúvidas por MP & MSN. Poste no Fórum.

  7. #7
    Wannabe Avatar de samukt
    Data de Ingresso
    Sep 2006
    Localização
    na frente do pc
    Posts
    557

    Re: [PHP] Construindo um sistema simples de Login

    Parabens!!
    root@samukt #

    > _@email and msn: samukt[at]inw-seguranca[dot]com
    > _Twitter: @samukt
    Código:
                    ,-'   '-.
                   /  _   _  \
                   | (o)_(o) |
                   \ .-""-.  /
                   //`._.-'`\\  
                  //   :    ; \
                 //. - '' -.|  |
                /(    :     |  |
               |  \__:     ,/  /,
             _;'`,_/'     |`.-' `\
             )     `\.___./;     .'
             '.__    )----'\__.-'
                 `""`

  8. #8
    Moderador Avatar de Dalt0n
    Data de Ingresso
    Jun 2007
    Localização
    Sao Paulo
    Posts
    1.727

    Re: [PHP] Construindo um sistema simples de Login

    Muito bom... logo trarei minhas dúvidas!

    Valeu!!!

  9. #9
    White Hat Administrador Avatar de fvox
    Data de Ingresso
    Sep 2005
    Localização
    São Paulo - SP
    Posts
    4.428

    Re: [PHP] Construindo um sistema simples de Login

    Hi.

    Só cuidado com as vulns nesse código aí, hein. Filtra os dados vindo do cliente antes de botar na query do SQL. =P

    []'s
    Acha que está caindo na insanidade? Mergulhe!

    Twitter | Blog | Facebook | Github

  10. #10
    Wannabe
    Data de Ingresso
    May 2009
    Localização
    localhost
    Posts
    641

    Re: [PHP] Construindo um sistema simples de Login

    Citação Postado originalmente por fvox
    Hi.

    Só cuidado com as vulns nesse código aí, hein. Filtra os dados vindo do cliente antes de botar na query do SQL. =P

    []'s
    É interessante informar, que este sisteminha não é seguro, ele está vulnerável a SQL (Basta você dar uma arrumadinha) . Criei ele como o intuito de apenas dar uma base para quem não sabia fazer um sistema de login.
    xD~

Tópicos Similares

  1. [Tutorial] Sistema de Login
    Por Rahackzin no fórum Delphi
    Respostas: 17
    Último Post: 15 Aug 2009, 20:02
  2. Duvida Sistema De login
    Por The Fuck's no fórum HTML, XHTML e CSS
    Respostas: 0
    Último Post: 15 Dec 2008, 16:55
  3. PHP:Sistema de login com login e senha pré definodos
    Por Mr.Bug no fórum HTML, XHTML e CSS
    Respostas: 1
    Último Post: 17 Sep 2008, 21:59
  4. Sistema de Cadastro e Login Contribuição ao Forum
    Por matrix2003 no fórum Programação
    Respostas: 0
    Último Post: 09 Jun 2008, 19:24
  5. Criando um sistema de login em seu programa
    Por Victor Matiuzzo no fórum Delphi
    Respostas: 3
    Último Post: 09 Jun 2008, 18:16

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • Você não pode enviar respostas
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  •