Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

MrEd

Sistema de Login

Recommended Posts

Pessoal, alguem pode me dizer como se faz um sistema de login em php? Eu to tentando mais tem algo errado pq tudo q eu coloco ele aceita mesmo se os dados estiverem errado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aguenta o Scroll!!!

          -----------------------------------------------------------------                Como criar um sistema de login usando PHP + MySQL                         Versao 1.2 - Fevereiro de 2002          -----------------------------------------------------------------                    © CopyLeft #php@brasnet.org  2000 - 2002Introducao----------                                      Esse tutorial foi escrito  para programadores PHP interessados  emdesenvolver um sistema de logins  seguro para seu site usando  MySQL ePHP.    Voce precisa de algum conhecimento em MySQL, incluindo como  criaruma tabela usando o MySQL client.Objetivos---------Nesse tutorial, voce vai aprender como:    1) Passar informacoes de uma pagina a outra usando sessoes    2) Validar a senha do usuario usando MySQL    3) Validar a sessao usando chave publica/privada    4) Restringir o acesso a uma pagina    Sessoes-------    PHP 4, assim como ASP  e ColdFusion, suporta  sessoes nativamente.Mas o que eh uma sessao? Basicamente, sessao eh uma maneira de  mantervariaveis  entre  paginas.  Uma  sessao  eh  criada  usando  a  funcaosession_start(), que,  quando  chamada,  cria  um  identificador(vamoschama-lo simplesmente de id) , unico para cada sessao. Geralmente  eleeh passado  ao usuario  via cookie.  O  PHP  entao  cria  um  arquivocorrespondente  no  servidor,    onde  ele  pode  guardar  quantasvariaveis quiser. O arquivo tem o mesmo nome do id da sessao.    Quando uma sessao eh criada, voce pode registrar quantas variaveisquiser. O valor dessas variaveis sao gravados no arquivo do  servidor.Enquanto  o cookie  dessa sessao  'viver', essas  variaveis vao  estardisponiveis  em  qualquer  pagina  com  o  mesmo  dominio que  quiseracessar-las.  Isso  eh muito  mais conveniente  do que  ficar mandandovariaveis  escondidas(hidden)  num form,  ou  ficar mandando  cookiesenormes.      Claro,  existe  a  possibilidade  que alguns usuarios  nao aceitemcookies, por  isso, o  PHP permite  a voce  passar o id da  sessao por'query string', voce pode fazer isso manualmente, anexando o id a URL,ou entao modificando as configuracoes  do  PHP,  p/  q  ele  faca issoautomaticamente.    Para  voce  anexar o  id  a  URL  manualmente, use  <?=SID?>, issoautomaticamente imprimira uma string parecida com  PHPSESSID=aa045a5f4692a264c0d3095f80e18c0e      Adicionando isso ao link, ira passar a variavel PHPSESSID via GET.Algo como  <a href="pagina.php?<?=SID?>">Proxima pagina</a>  Nota: <?=  eh um  atalho para  o echo.  Voce pode  usar ele a qualquer      momento, nao apenas com sessoes.          Se o  PHP for  compilado com  a opcao  --enable-trans-id, o id dasessao serah automaticamente inserido em todo link relativo.    Basicamente, sessoes  sao muito simples de  codificar. Mostraremosagora um script que ira registrar  a variavel $frase, e ira dar  lhe ovalor "Hello World":<!----- hello.php ---------><?php    session_start();    session_register("frase");        $frase = "Hello World";?><!----- hello.php --------->    Nas proximas paginas, a variavel  $frase  estara  disponivel,  massomente depois  q você  chamar a  funcao session_start().  Essa funcaomanda o  PHP olhar  se a  sessao existe,  e se  ela existe,  todas asvariaveis da sessao se tornam acessiveis como variaveis globais.    Agora  faremos um  pequeno script, com  alguns ifs,  para  mostrarmelhor a funcionalidade das sessoes.<!----- sessao.php ---------><?php    session_start();        //checa se o seu nome jah estah na sessao    if(session_is_registered("nome"))    {        echo "Eu jah sei seu nome, $nome";    }    //essa parte provavelmente serah chamada    //a primeira vez q você visitar a pagina    else if(!isset($submit))    {?>    <form action="<?=$PHP_SELF?>" method="post">    Primeiro Nome<input type="text" name="primeiro"><BR>    Ultimo  Nome<input type="text" name="ultimo"><BR>    <input type="submit" name="submit" value="mandar">    </form><?php    }        //quando o form for mandado, essa parte do script    //serah executada    else    {      session_register("nome");      $nome = $primeiro . " " . $ultimo;            echo "Agora aprendi seu nome, $nome";    }?>      Depois de rodar esse codigo, atualize  a pagina,  voce verah que oPHP  lembra  do seu  nome.  Repare que  temos  uma funcao  nova  sendoutilizada, session_is_registered(). Ela verifica  se uma variavel  foiregistrada  na  sessao,  retornando  verdadeiro  se  a  variavel  foiregistrada e  falso se nao tiver sido.Nota: Como voce deve ter  reparado, quando voce registra as  variaveis      de sessao, voce nao usa o '$', apenas o nome da variavel.      Nota2: as  funcoes session_start  e session_register  devem ser usadas      antes de  voce mandar  qualquer texto  ao navegador, senao voce      tera varios erros.      Autenticacao------------                          "What was your username again?" clickety, clickety                                                            - The BOFH                                                                                                                            Nos usaremos um banco de dados para guardar o login  e a  senha dousuario. Iremos comparar o login e a senha do usuario, com os logins esenhas que  estao na  nossa tabela.  Suponhemos que  a tabela se chameusuarios, ela eh algo parecido comNome      | Tipo                                    | Chave--------------------------------------------------------------------ID        int not null default '0' auto_increment    Chave Primarianome      varchar(255)login      varchar(30)senha      varchar(32)--------------------------------------------------------------------    Os campos login e senha sao essenciais na tabela, os outros campossao alegoricos. Para criar essa tabela, use o seguinte comando SQL:create table usuarios (idint not null default '0' auto_increment,nomevarchar(255),loginvarchar(30), senhavarchar(32),primary key(id));    Para proteger mais nossos  dados,  nos  usaremos  uma  funcao  decriptografia  chamada  md5(),    para  criptografar  as    senhas  dosusuarios. md5 eh uma funcao hash  de caminho unico, ou seja, uma  vezcriptografado,  impossivel  descriptografar  os  dados.  Mas  se  ehimpossivel descriptografar  a senha,  como saberemos  que o  usuariodigitou a senha correta? Simples, nos criptografamos a senha  digitadapelo usuario e comparamos ela com a senha guardada no banco.    Para testarmos se o usuario digitou uma  senha corretamente, bastausarmos o seguinte comando SQL:    SELECT * FROM usuarios where login = '$login' AND senha = md5('$senha')        Essa  consulta  nos  retornara uma  linha se houver um usuario comakele  login  e  senha no  banco,  ou  nenhuma se o  login  e/ou senhaestiverem errados.  Usaremos a  funcao mysql_num_rows()  do PHP  paratestarmos quantas linhas o mysql nos retorna na consulta. Vamos  agoraescrever a funcao para  testar se a senha  do usuario esta correta  ounao.<!----- controle.php ---------><?phpfunction Autenticar($login,$senha){    $sql = "SELECT * FROM usuarios where login = '$login' AND senha = md5('$senha')";    $query = mysql_query($sql);        if(mysql_num_rows($query) == 1)        return 1;    else        return 0;}?>        <!----- controle.php --------->    A funcao Autenticar  recebe como parametros  o login e  a senha dousuario e  retorna 1(verdadeiro)  se o  usuario foi  autenticado comsucesso, ou 0(falso) se o login e/ou senha estiverem incorretos.Validacao da Sessao-------------------  Agora que ja autenticamos o usuario, iremos criar uma chave p/ ele.Uma  chave?  Sim,  esse  sistema  ira  utilizar  um  esquema  de chavepublica/ chave secreta, ou seja, com a chave secreta você obtem a  chavepublica, mas com  a chave publica  eh quase impossivel  termos a chaveprivada.    Para sabermos se o  usuario realmente  tem acesso  a nossa pagina,iremos  gerar  a  chave publica  a partir  da nossa  chave privada,  ecompararmos  com  a  chave  do  usuario.  Iremos  alterar  o  arquivocontrole.php para isso.<!----- controle.php ---------><?phpfunction Autenticar($login,$senha){    //pegamos as variaveis globais p/ usarmos na funcao    GLOBAL $HTTP_SERVER_VARS, $CHAVE_SECRETA, $usuario;        $sql = "SELECT * FROM usuarios where login = '$login' AND senha = md5('$senha')";    $query = mysql_query($sql);        if(mysql_num_rows($query) == 1)    {        /* pega dados p/ gerar a chave publica */        $user = mysql_fetch_object($query);        $ip  = $HTTP_SERVER_VARS["REMOTE_ADDR"];        $hora = time();                /* gera a chave e guarda as informacoes na sessao */        $chave = md5($user->nome . $CHAVE_SECRETA . $ip . $hora);                $usuario = array($user->nome,$hora,$chave);                session_register("usuario");        return 1;    }        else        return 0;}?>        <!----- controle.php --------->    Primeiramente, declaramos 3 variaveis como global na nossa funcao.Essa eh a maneira de pegar valores das variaves globais dentro  de umafuncao.  A variavel  $HTTP_SERVER_VARS eh  um vetor  associativo,  quecontem todas as variaves do servidor, usaremos ela para pegar o ip  dousuario. Depois tem a $CHAVE_SECRETA, que contem nossa  chave privada.Por  ultimo, temos  a variavel  $usuario, que  vai conter  informacoessobre o usuario. Precisamos declarar  ela como GLOBAL, para que  possaser guardada na session, senao nao podemos registra-la.    A nossa chave eh criada a  partir de 4 dados: o nome  do usuario oip dele, a hora que ele estah  acessando e a nossa chave secreta. Essachave secreta  pode ser  qualquer  texto  que nos  quisermos, e  nemprecisamos  lembrar dele,  pois ele  ficara guardado  no codigo.  Osunicos  dados  que  precisamos  guardar  na sessao  sao  o nome  dousuario, e  o horario  que ele  acessou. Repare  que nao guardamos  emmomento  algum  a  senha  do  usuario  na  sessao,  pois  alguem  mal -intencionado  pode  fazer  um  script  para  ler  os  arquivos  dassessoes, e  qualquer um  que poder  rodar scripts  php na maquina,pode ler as sessoes.    Para dificultarmos ainda mais a descoberta da nossa chave secreta,cada vez  que o  usuario  acessar  uma pagina,  nos mudaremos  a chavepublica. Como? Simplismente criando uma  nova chave com o horario  queele acessou a pagina. Veja a funcao Logado:<!----- controle.php ---------><?php ...parte antiga do codigo function Logado(){    GLOBAL $HTTP_SERVER_VARS, $HTTP_SESSION_VARS, $CHAVE_SECRETA;          $ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];    list($nome,$hora,$chave) = $HTTP_SESSION_VARS["usuario"];          //chave nao combina    if($chave != md5($nome . $CHAVE_SECRETA . $ip . $hora))        return 0;        //desloga por inatividade tbm     if($hora + (15 * 60) > time())        return 0;            //atualiza o horario de acesso    $hora = time();        //recria a chave        $chave = md5($nome . $CHAVE_SECRETA . $ip . $hora);        $usuario = array($nome,$hora,$chave);    $HTTP_SESSION_VARS["usuario"] = $usuario;        return 1;}?>    Agora apareceu uma  nova variavel global,  $HTTP_SESSION_VARS. Elaeh um vetor associativo com todas as variaveis da sessao. Usaremos elapara pegar o dados do usuario gravados na sessao.     Depois construimos a  chave publica e  testamos com a  chave que ousuario tem,  se elas  forem diferentes,  a funcao  retorna  0(falso).Agora colocamos uma nova caracteristica no nosso sistema. Como sabemoso ultimo horario  que o usuario  acessou uma pagina,  podemos testar otempo de inatividade  dele, deslogando-o caso  tenha passado um  certotempo(no nosso caso 15 minutos), isso tambem ajuda na seguranca,  poisse  alguem  conseguir  ler o  arquivo de  sessao e  tentar forjar  umasessao,  ele  tera apenas  aquele  tempo-limite para  poder  acessar amaquina com o mesmo ip do usuario valido e garantir o acesso.Restringindo Acesso-------------------    Jah temos funcoes para validar o usuario e validar a sessao apos ousuario ter  logado, agora  precisamos restringir  o acesso  a umapagina redirecionando o usuario a outra pagina, caso ele nao tenha  selogado antes, ou caso a sessao dele tenha expirado.    Vamos mostrar o controle.php completo agora, com todas as  funcoese o redirecionamento.<!----- controle.php ---------><?php    //inicia a sessao    session_start();        //chave secreta - modifique a vontade    $CHAVE_SECRETA = "133dde6a93c3205abf91c73100e7517d";    function Autenticar($login,$senha){    //pegamos as variaveis globais p/ usarmos na funcao    GLOBAL $HTTP_SERVER_VARS, $CHAVE_SECRETA, $usuario;        $sql = "SELECT * FROM usuarios where login = '$login' AND senha = md5('$senha')";    $query = mysql_query($sql);        if(mysql_num_rows($query) == 1)    {        /* pega dados p/ gerar a chave publica */        $user = mysql_fetch_object($query);        $ip  = $HTTP_SERVER_VARS["REMOTE_ADDR"];        $hora = time();                /* gera a chave e guarda as informacoes na sessao */        $chave = md5($user->nome . $CHAVE_SECRETA . $ip . $hora);        $usuario = array($user->nome,$hora,$chave);                session_register("usuario");        return 1;    }        else        return 0;}function Logado(){    GLOBAL $HTTP_SERVER_VARS, $HTTP_SESSION_VARS, $CHAVE_SECRETA;          $ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];    list($nome,$hora,$chave) = $HTTP_SESSION_VARS["usuario"];          //chave nao combina    if($chave != md5($nome . $CHAVE_SECRETA . $ip . $hora))        return 0;        //desloga por inatividade tbm     if($hora + (15 * 60) < time())        return 0;            //atualiza o horario de acesso    $hora = time();        //recria a chave        $chave = md5($nome . $CHAVE_SECRETA . $ip . $hora);        $usuario = array($nome,$hora,$chave);    $HTTP_SESSION_VARS["usuario"] = $usuario;        return 1;}    //usuario ainda nao logou    if(!session_is_registered("usuario"))    {        //tentando logar         if(isset($HTTP_POST_VARS["login"]) && isset($HTTP_POST_VARS["senha"]))        {              $login = $HTTP_POST_VARS["login"];              $senha = $HTTP_POST_VARS["senha"];                            if(Autenticar($login,$senha))              {                  //redireciona p/ a pagina principal                  header("Location: principal.php");                  exit();              }              else              {                  //redireciona p/ a pagina de erro                  header("Location: erro.php");                  exit();              }        }        else        {              //manda p/ a pagina com o form              header("Location: index.php");              exit();        }    }    //usuario logado - certeza?    else    {        //usuario fajuto ou tempo limite expirado        if(!Logado())        {                header("Location: index.php");              exit();        }    }?>        <!----- controle.php --------->          Construimos uma  sequencia de  ifs-elses para  testarmos todas  aspossibilidades. Comecamos  testando se  o usuario  ainda nao  estalogado, se ele nao estiver ainda logado, podemos ter 2 possibilidades:  1) O usuario esta tentando se logar: Nesse caso tentamos validar  o      login  e  a  senha  dele  usando  a  funcao  Autenticar(),  se      conseguirmos, ele sera direcionado a pagina principal, senao ele      eh direcionado a uma pagina de erro.    3) O  usuario esta  tentando acessar  a pagina  indevidamente:  Ele      pode, por ex. apenas estar digitando o caminho completo dela  no      navegador,  sem  antes  passar  pelo  login,  entao  ele  eh      redirecionado a pagina de login.          Se  o usuario  jah tiver  logado, ou  seja, a  variavel 'usuario'estiver registrada na sessao, nos  testamos a chave publica dela,  e otempo-limite.  Caso  um dos  dois  nao seja  valido,  redirecionamos ousuario para a pagina de login, senao, o script nao fara nada.     Para  restringir  o acesso  a  uma pagina,  incluiremos  o arquivocontrole.php  no  comeco da  pagina,  assim,  o  usuario  que tiverpermissao podera  acessar a  pagina, e  o usuario  que nao tiver, seradefidamente redirecionado a pagina  de login. Veja uma  pagina simplesde exemplo<!----- principal.php ---------><?php require("controle.php"); ?><html><body><center> Bem vindo a pagina secreta, com acesso restrito </center></body></html><!----- principal.php --------->    Aqui apareceu uma  nova funcao, a  require(). require() inclui  umarquivo no  codigo, como  a  funcao  include(), a  unica diferenca  ehque,  se acaso  o arquivo  nao existir,  o require  encerra o  script,enquanto o include apenas da um aviso.    Precisamos tambem  deslogar o  usuario. Isso  eh bastante simples,basta  usarmos  a  funcao  session_destroy().  Colocaremos  ela  noindex.php e faremos um link p/ ela caso o usuario queira deslogar.Nota:  Voce  obrigatoriamente precisa  de  iniciar a  sessao  antes de      destrui-la.      <!----- index.php ---------><?php    session_start();    session_destroy();?>    <html><body><form action="controle.php" method="post">Login: <input type=text name="login">Senha: <input type=password name="senha"><input type=submit name="submit" value="Logar"></form></body></html><!----- index.php --------->    Agora modificaremos a  principal.php para que  tenha um link  paradeslogar    <!----- principal.php ---------><?php require("controle.php"); ?><html><body><center> Bem vindo a pagina secreta, com acesso restrito! <a href="index.php">Deslogar</a> </center></body></html><!----- principal.php --------->    CONSIDERACOES FINAIS--------------------    Nesse tutorial, tentei mostrar como construir um sistema seguro  efacil  de  usar.  Seguranca  eh  um  assunto  inesgotavel,  e essetutorial esta longe de se  tornar um guia definitivo, ele  deve servircomo  base p/  sistemas mais  seguros. Se  voce tiver  ideias de  comoenganar  esse  sistema, peco  que  mande um  mail  p/ narcotic@php.netdescrevendo suas ideias, criticas, sugestoes e comentarios tambem  saobem-vindos.    Gostario de agradecer a jpm(  a ideia original eh dele,  eu apenasaperfeicoei um  pouco), agradecer tambem a DiaBiNhoW, por dica de comoregistrar uma  variavel numa  sessao dentro  de uma  funcao, agradeceraos frequentadores  do canal  #php, pelas  discussoes, e  que sao  oprincipal publico alvo desse tutorial.Mais Informacoes-----------------    RSA - Informacoes sobre criptografia - chave publica/privada          http://www.rsasecurity.com/rsalabs/faq/              WebMonkey - Bom site de tutoriais                http://hotwired.lycos.com/webmonkey/frontd...door/index.html                    PHPBuilder - Outro site com excelentes tutorias e artigos                http://www.phpbuilder.com                    PHP.net - ultimas informacoes sobre o php, manual online, tutoriais e faqs.              http://www.php.net                  MySQL.com - http://www.mysql.com, ultimas informacoes,                        manual online, tutoriais e faqs.                                                  SuperPHP: Bom material em portugues,  noticias e dicas.              http://www.superphp.com.br                            PHPBrasil: Bom material em portugues, scripts, foruns, tutoriais e artigos,              http://www.phpbrasil.com                                Autor-----    Esse tutorial foi escrito por Narcotic, operador do canal #php  daRede  BrasNET  de  IRC. Voce  pode  copiar,  modificar, traduzir  e/oupublicar esse tutorial, desde que avise o autor, mandando um mail paranarcotic@php.net,  ou avisando  um dos  operadores do  canal #php.  Sepublica-lo, mande-me a  URL com o  endereco, se modifica-lo,  mande-meuma copia. Sugestoes sobre esse tutorial, e ideias de tutorias  novos,sempre serao bem vindas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caramba!

Ce publicou o livro inteiro!!!

Vou aproveitar que eu tb sou iniciante e vou estuda-lo... :^)

 

Olha, no Imastesr tem um tutorial de cadastramento de clientes que vai te ajudar no esquema de autenticação de usuário..

 

ve aí: http://php.imasters.com.br/a_um_click/tutorial.asp

 

sds

 

Clau Johnson

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

 

Sei q o tópico é antigo, porém estou precisando fazer um sistema destes e segui as instruções deste tutorial, porém qd digito o login e senha ele nao entra em nada, continua na tela de login e senha...

 

Achei estranho pois nao identifiquei onde pede o banco de dados, apenas pede a tabela... estaria faltando alguma coisa?

Alguem pode me ajudar?

 

Grato!

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://www.videotutoriais.net/ ai tem uma vídeo aula referente a sua dúvida, procure-a ai, abraço.

 

 

O post ficou duplicado por causa do famoso : "502 Proxy error".. rsrs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como criar um sistema de login usando PHP + MySQL postado por

DanielGianni

 

Uso o arquivo controle.php postado pelo DanielGianni e sempre

funcionou bem, agora com versões mais recentes de PHP5 e PHP6 não

consigo conectar o banco de dados mysql. Preciso de ajuda.

 

Por favor alguem pode postar o mesmo arquivo controle.php alterando a

session_register já que ficou obsoleta.

 

Tentei fazer as alterações sem sucesso.

 

Vide:

http://www.php.net/manual/pt_BR/function.session-register.php

 

Surge o aviso cuidado:

Se você quer que seu script funcione independentemente do uso de

register_globals, você precisa usar a matriz $_SESSION já que

$_SESSION é automaticamente registrada. Se o seu script usa

session_register(), ele não irá funcionar em ambientes onde a diretiva

de configuração register_globals esteja desabilitada.

 

Obrigado

albertopc

Se possível for enviar pelo e-mail albertopcastro@yahoo.com

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa albertopc nao precisava dessenterrar um topico antigo, basta criar um topico com sua duvida, e pelo que você falou, você esta com problemas com register_globals, nao se deve mais usar ela

por motivo de segurança.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa albertopc nao precisava dessenterrar um topico antigo, basta criar um topico com sua duvida, e pelo que você falou, você esta com problemas com register_globals, nao se deve mais usar ela

por motivo de segurança.

 

Fabyo obrigado por ler meu post. Você poderia atualizar este arquivo para mim. Sou inexperiente e já tentei altera-lo sem sucesso. Me faça este favor.

Segue abaixo o arquivo a ser modificado:

 

<!----- controle.php --------->

<?php
//inicia a sessao
session_start();

//chave secreta - modifique a vontade
$CHAVE_SECRETA = "133dde6a93c3205abf91c73100e7517d";

function Autenticar($login,$senha)
{
//pegamos as variaveis globais p/ usarmos na funcao
GLOBAL $HTTP_SERVER_VARS, $CHAVE_SECRETA, $usuario;

$sql = "SELECT * FROM usuarios where login = '$login' AND senha = md5('$senha')";
$query = mysql_query($sql);

if(mysql_num_rows($query) == 1)
{
/* pega dados p/ gerar a chave publica */
$user = mysql_fetch_object($query);
$ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
$hora = time();

/* gera a chave e guarda as informacoes na sessao */
$chave = md5($user->nome . $CHAVE_SECRETA . $ip . $hora);
$usuario = array($user->nome,$hora,$chave);

session_register("usuario");
return 1;
} 
else
return 0;
}
function Logado()
{
GLOBAL $HTTP_SERVER_VARS, $HTTP_SESSION_VARS, $CHAVE_SECRETA;

$ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
list($nome,$hora,$chave) = $HTTP_SESSION_VARS["usuario"];

//chave nao combina
if($chave != md5($nome . $CHAVE_SECRETA . $ip . $hora))
return 0;

//desloga por inatividade tbm 
if($hora + (15 * 60) < time())
return 0;

//atualiza o horario de acesso
$hora = time();

//recria a chave 
$chave = md5($nome . $CHAVE_SECRETA . $ip . $hora);

$usuario = array($nome,$hora,$chave);
$HTTP_SESSION_VARS["usuario"] = $usuario;

return 1;
}
//usuario ainda nao logou
if(!session_is_registered("usuario"))
{
//tentando logar 
if(isset($HTTP_POST_VARS["login"]) && isset($HTTP_POST_VARS["senha"]))
{
$login = $HTTP_POST_VARS["login"];
$senha = $HTTP_POST_VARS["senha"];

if(Autenticar($login,$senha))
{
//redireciona p/ a pagina principal
header("Location: principal.php");
exit();
}
else
{
//redireciona p/ a pagina de erro
header("Location: erro.php");
exit();
}
}
else
{
//manda p/ a pagina com o form
header("Location: index.php");
exit();
}
}
//usuario logado - certeza?
else
{
//usuario fajuto ou tempo limite expirado
if(!Logado())
{ 
header("Location: index.php");
exit();
}
}
?> 

<!----- controle.php --------->

 

 

 

Obrigado

 

albertopc

 

e-mail albertopcastro@yahoo.com

Compartilhar este post


Link para o post
Compartilhar em outros sites

Blz vou comentar alguns erros desse codigo e te passar uma receita de bolo e voce tenta fazer o resto

 

session_start();

/*Serve para iniciar uma sessao, muita gente tem medo ou nao sabe usar com medo de alguma saida html antes por isso coloca ela no inicio da pagina, mas sabendo usar basta colocar a onde precisar mesmo com saida html, mas isso nao vem ao caso, só quiz comentar isso*/

 

$CHAVE_SECRETA 

// besteira e sem a menor necessidade

 

function Autenticar($login,$senha)

// nao precisa de uma função pra isso, seria melhor usar OOP

 

$sql = "SELECT * FROM usuarios where login = '$login' AND senha = md5('$senha')";

//Erro gravissimo de segurança, esse SELECT esta muito facil de injetar um codigo malicioso ou como é conhecido SQL Injection

 

session_register

// nao se usa mais essa função obsoleta, por causa do register_globals

 

troque $HTTP_SERVER_VARS por $_SERVER e $HTTP_SESSION_VARS por $_SESSION

 

session_is_registered

// nao se usa mais essa função obsoleta, por causa do register_globals

 

a ideia basica de um sistema de login seria +-:

 

* Pegar as variaveis vindas do formulario

* Tratar os dados, filtrar e validar

* Executar uma conexao com o banco de dados e um select para saber se o usuario existe

* Se existir cria um cookie ou uma session e para saber se o usuario pode acessar uma pagina basta verificar se o cookie ou session existe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então

 

Tenho um código de login e queria a opnião de vcs para como poder deixá-lo mais seguro ..

require_once("classdb.inc");
require_once("classusuarios.inc");

$con = new bd("banco");
$con->conecta("banco","localhost","80","usuario","senha");


$usr_h = new usuarios($con);

session_register("usr_id");
session_register("usr_login");
session_register("usr_funcao");
session_register("usr_nome");
session_register("usr_tipo");


// Executa o logout do usuario
if($_GET['logout']=="S") {
	session_unset();
	session_destroy();
	session_start();
}
$usuario = mysql_real_escape_string($_POST['usuario']);
$senha = mysql_real_escape_string($_POST['senha']);

if(!empty($HTTP_SESSION_VARS["usr_id"])) {
	$usr_h->senha->login = $HTTP_SESSION_VARS["usr_login"];
	$usr_h->user_id = $HTTP_SESSION_VARS["usr_id"];
	$usr_h->funcao = $HTTP_SESSION_VARS["usr_funcao"];
	$usr_h->nome = $HTTP_SESSION_VARS["usr_nome"];
	$usr_h->senha->tipo = $HTTP_SESSION_VARS["usr_tipo"];
	$usr_h->senha->ativo = $HTTP_SESSION_VARS["usr_ativo"];
 $us = $usr_h->user_id;
}
elseif(!empty($usuario) AND !empty($senha)) {
	$erro = $usr_h->login($usuario,$senha);
	if($erro!="OK") {
		$usr_h->senha->tipo = 0;
		$usr_h->senha->login = 0;
		echo '<script> alert("' . $erro . '");</script>';

}


if($area!=$usr_h->senha->tipo AND $area!=0) {
	echo "<script>document.location.href=\"/\";</script>";
	exit;
}
$us = $usr_h->user_id;

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.