|
||
|
|
|
Avaliação:
![]() ![]() ![]() ![]() | Publicado em: 11/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).
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 ![]() ![]() ![]() ![]() ![]() ![]() |
|
|
|