MrEd 0 Denunciar post Postado Maio 22, 2003 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
ClicksFavoritos 0 Denunciar post Postado Maio 22, 2003 Qual sua dúvida? Poste seu código. Compartilhar este post Link para o post Compartilhar em outros sites
DanielGianni 0 Denunciar post Postado Maio 22, 2003 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
MrEd 0 Denunciar post Postado Maio 23, 2003 Daniel, valeu, eu copiei o que você postou e vou dar uma lida. Compartilhar este post Link para o post Compartilhar em outros sites
claujohnson 0 Denunciar post Postado Maio 24, 2003 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
lsteffler 0 Denunciar post Postado Março 24, 2008 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
Alaerte Gabriel 662 Denunciar post Postado Março 24, 2008 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
Alaerte Gabriel 662 Denunciar post Postado Março 24, 2008 http://www.videotutoriais.net/ ai tem uma vídeo aula referente a sua dúvida, procure-a ai, abraço. Compartilhar este post Link para o post Compartilhar em outros sites
albertopc 0 Denunciar post Postado Maio 10, 2010 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
Fabyo 66 Denunciar post Postado Maio 10, 2010 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
albertopc 0 Denunciar post Postado Maio 12, 2010 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
Fabyo 66 Denunciar post Postado Maio 12, 2010 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
ARS Informática 0 Denunciar post Postado Maio 12, 2010 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