|
||
|
|
| Conheça o Plugfeed | » Início » Programação » PHP » Login com Sessions --> |
|
Avaliação:
![]() ![]() ![]() ![]() | Publicado em: 12/12/2007Login com Sessions
Oberaldo Bull Programador PHP/MySql, trabalho no desenvolvimento de sites e sistemas dinâmicos. Faço parte da EquipeXQ de programadores, administro o site nacional do framework CakePHP (www.cakephp.com.br).
Login com Sessions
Olá Pessoal! Neste tutorial mostrarei como criar um sistema de autenticação simples, usado para proteger áreas restritas em sites. Primeiro, vamos criar a base de dados: CREATE TABLE `login` ( `id` int(11) NOT NULL auto_increment, `login` varchar(12) NOT NULL, `senha` varchar(60) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ; INSERT INTO `login` (`id`, `login`, `senha`) VALUES (1, 'admin', '123456'); Vamos criar o arquivo de conexão: <?php $host = "localhost"; $user = "usuariodb"; $pass = "senhadb"; $base = "plugmasters"; $con = mysql_connect($host, $user, $pass); $banco = mysql_select_db($base); $tbl_login = "login"; ?> Agora, vamos criar o form de login: //salve como index.php <fieldset style="width: 25%;"> <legend>Login</legend> <form method="POST" action="login.php"> <p>Usuário: <input type="text" name="login" size="20"></p> <p>Senha: <input type="password" name="senha" size="20"></p> <input type="submit" name="submit" value="Entrar"> </form> </fieldset> Agora, a página que verifica se o login existe: // salve como login.php <?php include("config.php");// arquivo de conexão com banco de dados // selecionar dados da tabela $query = "SELECT * FROM $tbl_login WHERE login='$login' AND senha='$senha'"; $res = mysql_query($query); $row = mysql_num_rows($res); // verificar se existe o login e senha if($row == 0){ echo "Login ou senha incorretos!<br />"; echo "Clique <a href='index.php'>AQUI</a> para voltar e tentar novamente."; } else{ // se estiver tudo OK, registra sessão de login session_start("login"); session_name(); session_destroy(); session_register("login", "senha"); header("Location:index2.php"); exit; } ?> Agora, criaremos o arquivo responsável por verificar se o usuário está autenticado: // salve como verifica.php <?php session_start("login"); if(!(session_is_registered("login") AND session_is_registered("senha"))){ header("Location:index.php"); exit; } $login = $_SESSION['login']; $senha = $_SESSION['senha']; ?> Para proteger suas páginas, faça o seguinte: <?php include("verifica.php"); echo "Olá ".$_SESSION['login'].", você está autenticado!"; ?> <br /><br /> <a href="logout.php">Sair</a> Para efetuar o logout, faça o seguinte: // salve como logout.php <?php session_start(); unset($_SESSION['login']); header("Location:index.php"); ?> Tiago Hillebrandt <tiagoscd@yahoo.com.br>
Show cara, porém achei que faltou segurança, pois está totalmente vulnerável a SQL Injection.
Outra coisa que notei, é que você utilizou alguns métodos deprecated, como o session_is_registered(), que os programadores PHP são altamente desencorajados a utilizá-los, porque eles podem cair fora do pacote do PHP a qualquer hora, sem contar que eles estão sem serem atualizados por um bom tempo, heheehh. Mas parabéns pelo artigo, muito bom para iniciantes =) Abraço ![]() ![]() ![]() ![]() ![]() Mauro <eddimanero@bol.com.br>
Ola queria falar uma coisa no arquivo login.php
Não esta precisando resgastar o valor do index.php login= _POST"login"; senha= _POST"senha"; ![]() ![]() ![]() ![]() ![]() JESSE SANTANA <j_b_santana@hotmail.com>
GOSTEI DO ARTIGO. PARABÉNS. AGORA TERIA COMO COM O MESMO FORMULÁRIO DE LOGIN FAZER UMA PESQUISA NA BD MYSQL ONDE MOSTRARIA SÓ OS REGISTROS COM O NOME DO USUÁRIO QUE LOGOU? TENTEI FAZER MAS NÃO FUNCIONOU PQ O ACTION É POST E PARA PESQUISA ELE PRECISA SER GET... ABRAÇOS JESSE SANTANA
![]() ![]() ![]() ![]() ![]() hacker <walissomsua mar de 4>
ai ja invadi varios sites com sql injection
e a falha que nos mas usamos depois da via ftp que nesse site e vulneravel a porta 21 desse site a ftp esta aberta para mim ![]() ![]() ![]() ![]() ![]() Edvaldo P. Jatobá <edvaldopj@hotmail.com>
Olá,
Gostei do login, É possivel criar um login tipo chave xxx.xxx.xxx que é valido por 30 minutos, 1 hora e 24 horas ? Tipo libera internet e depois deste tempo ele faz o bloqueio.. Muito obrigado !! ![]() ![]() ![]() ![]() ![]() Mauro <eddimanero@bol.com.br>
Cara não sei oque esta acontecendo mais quando eu mando para internter o session ele não loga!!
![]() ![]() ![]() ![]() ![]() Carlos Silva <carlos.silva@gfmi.com.br>
Muito bom, pra vcs terem uma ideia, coloquei este sistema de login em um wap.
![]() ![]() ![]() ![]() ![]() João Carvalho <joaovilcarvalho@hotmail.com>
Sou um iniciante a tender para o medio, GOSTEI! Simplesmente me esta a dar um erro, e nao consigo percerber o porquê,o erro é o seguinte:
"Warning: Cannot send session cache limiter - headers already sent (output started at c:apachehtdocsex1papbackofficetste do sistema de loginsindex2.php:10) in c:apachehtdocsex1papbackofficetste do sistema de loginsverifica.php on line 2" PORQUE SERÁ? ALQUEM ME AJUDE POR FAVORR! ate Obrigadao ![]() ![]() ![]() ![]() ![]() 5Y5T3M <HACKER.5Y5T3M@GMAIL.COM>
Bom amigo , so tem umas coisinhas , no arquivo PHP tem que ser resgatado o valor do login e da senha , caso o register_globals do PHP.ini estiver como off ( comum hoje em dia ) , caso estiver como On pode deichar assim ( quem quiser resgatar o valor é simples ( login = _POST'login '; e senha
senha = _POST'senha ' ) ) , outra coisa a principio o sitema esta vulneravel a injeção de sql , não analisei completamente , mas a primeira vista esta vulneravel . vlw por compartilhar . ![]() ![]() ![]() ![]() ![]() ![]() |
|
![]() |
|
|