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:
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 ##### ######################################### 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()); ?>
Na pagina login.php adicione um formulário com o method post e action para "verifica_login.php":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); ?>
e dentro deste formulátio crie 1 caixa de texto com o id/nome "login":Código:<form id="form1" name="form1" method="post" action="verifica_login.php">
1 caixa Adicione uma caixa de senha com o id/nome "senha":Código:<input type="text" name="login" id="login" />
E um botão.Código:<input type="password" name="senha" id="senha" />
Eu acho interessante colocar um get que receba provaveis erros ao logar, por exemplo "Usuário incorreto":
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 if (isset($_GET['erro'])){ echo $_GET['erro']; }?>
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.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); ?>
Depois de ter colocado os links, coloque o seguinte script acima de todo o código:
e o fechamento do if na ultima linha:Código:<?php require("verifica.php"); if ($permitido =1){ //se tiver permição, ele mostra a página ?>
Para mostrar um "bem-vindo" pro usuário basta usar este código:Código:<?php }//fecha a condição?>
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:<?php echo $_SESSION['login']; ?>
1 campo senha com o nome senha:Código:<input name="login" type="text" id="login" value="<?php echo $_SESSION['login'];?>" />
E por ultimo um botão.Código:<input type="password" name="senha" id="senha" />
Como no index vamos confirmar se o usuário está logado adicionando na primeira linha o script:
e o fechamento do if na ultima linha:Código:<?php require("verifica.php"); if ($permitido =1){ //se tiver permição, ele mostra a página ?>
E por ultimo um Get também informando erros:Código:<?php }//fecha a condição?>
Na penultima página a insere_edita.php, vamos criar o script que realizará o trabalho de editar os campos:Código:<?php if (isset($_GET['erro'])){ echo $_GET['erro']; }?>
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 ##### ######################################### 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 é 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.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"); ?>
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):
Até a proxima,Código:http://www.megaupload.com/?d=IVZWX8AC
Forum-Invaders 8)
:arrow:


Responder com Citação

