Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fala galera tudo certo?
Bem vou postar um script que criei esses dias e achei legal.. login com cookies isso é bom para você que quer criar um sistema onde o kra quando entrar novamente em sua pagina ele já entre logado ;) diferente de sessions que ao fechar o navegador ele exclui a sessão ;)
Bem eu criei aqui da seguinte maneira. quando você tentar acessar algum link e você não tiver logado vai aparecer o formulario para login assim que você fazer o login ele vai volta para a mesma pagina que você estava ;) show né
Bem lá vai
proteger.php
<?if($_REQUEST){ foreach($_REQUEST as $chave => $valor){$$chave = $valor;} } # recupera valores de post, get e cookies$expira = 30; # aqui é contado como minutos então nessa caso temos 30 minutosif(isset($deslog)){ # verifica se a variavel deslog existe se sim faça $_COOKIE = array(); # elemina todos os cookies da pagina setcookie("login","", time() - 1); # exclui o cookie}# função retirada do Fabyo;)# :::::::::::::::::::::::::::::::::::::::::function anti_sql($txt){ $txt = get_magic_quotes_gpc() == 0 ? addslashes($txt) : $txt; return preg_replace("@(--|\#|\*|;|=)@s", "", $txt); }# ::::::::::::::::::::::::::::::::::::::::::function logar($user,$pass){ $sql = mysql_query("select * from usuario where upper(usuario) = '".strtoupper($user)."' and senha = md5('$pass')"); # verifico se há algum usuario e a senha no banco de dados if(mysql_num_rows($sql) > 0){ # se me retorna maior que 0 quer dizer que existe return mysql_fetch_array($sql); # aproveita para retorna os dados do usuario como nome ... tec.. }else{ return false; # dados invalidos }}if(empty($login)){ # se o cookeie for vazio faça $usuario = anti_sql($usuario); # tira mals intenções dos fulanos $senha = anti_sql($senha); # tira mals intenções de fulanos $user["dados"] = logar($usuario,$senha); # envia os dados para a função responsavel de fazer as verificações no bando de dados if($user["dados"]){ # caso retorne verdadeido $logado = true; # atribuo a variavel $logado como verdadeiro setcookie("login", serialize(array("usuario" => $usuario, "senha" => $senha)), time() + (60 * $expira)); # cria a sessão }else{ $logado = false; # caso retorne false atribui o valor false para a variavel } }else{ # caso a sessão não seja vazio faça $info["login"] = unserialize(stripslashes($login)); # recupera dados do cookie $info["login"]["usuario"] = anti_sql($info["login"]["usuario"]); # tira mals intenções dos fulanos $info["login"]["senha"] = anti_sql($info["login"]["senha"]); # tira mals intenções dos fulanos $user["dados"] = logar($info["login"]["usuario"],$info["login"]["senha"]); # envia os dados para a função responsavel de fazer as verificações no bando de dados if($user["dados"]){ # caso retorne verdadeido $logado = true; # atribuo a variavel $logado como verdadeiro setcookie("login", serialize(array("usuario" => $info["login"]["usuario"], "senha" => $info["login"]["senha"])), time() + (60 * $expira)); # renoca a sessão caso o kra esteja ativo. }else{ $logado = false; # caso retorne false atribui o valor false para a variavel } }if(!$logado){ # caso a variavel logado retorna falso faça require("logar.php"); # inclue o logar.php exit; # para a execução aqui.}?>
logar.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "[http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Logar</title></head><style type="text/css"> / Login /#login #formulario{ width: 400px; background: #F1F3F5; border: 1px solid #CCCCCC; position: relative; margin: 0 50% 0 -200px; top: 50px; left: 50%; padding: 10px; clear: both;}#login #formulario #esquerdo{ float:left; width: 150px; text-align:center;}#login #formulario #esquerdo h1{ font: 10px Arial, Helvetica, sans-serif; text-align: left; color:#666666;}#login #formulario p{ margin: 10px 0 0 0;}#login #formulario #direito h1{ color: #009933; font-family: Arial, Helvetica, sans-serif; font-size: 20px;}#login #formulario #direito h2{ font: bold 11px Arial, Helvetica, sans-serif; color: #666666; padding: 10px; background-color: #E3E4E6; border: 1px solid #CCCCCC; margin: 10px 0 0 152px;}#login #formulario #direito h2 input{ font: 12px Arial, Helvetica, sans-serif; color:#666666; border: 1px solid #CCCCCC;}#login #formulario #direito h2 #enviar{ font: 12px Arial, Helvetica, sans-serif; color:#666666; background-color: #E6E6E6; border: 1px solid #CCCCCC;}/ Fim login /</style><body><div id="login"> <div id="formulario"> <form action="" method="post" name="login"> <div id="esquerdo"> <h1> Bem-vindo ao Painel de Controle!<p /> Digite seu nome de usuário e senha para acessar o painel administrativo. </h1> </div> <div id="direito"> <h1>Login</h1> <h2> Nome do úsuario:<br /> <input name="usuario" id="usuario" type="text" value="" /><p /> Senha:<br /> <input name="senha" id="senha" type="password" /><p /> <input id="enviar" name="Enviar" value="Enviar" type="submit"> </h2> </div> </form> </div></div></body></html>
Ai só adicionar no começo dos arquivos que você quer proteger o seguinte comando..
<?include("proteger.php");?>
E pronto funfando
Espero que seja util para a galera ai ;)
Opa tinha uma var errada no meio do codigo já alterei no primeiro post
o erro estava aqui
if($_REQUEST){ foreach($_REQUEST as $chave => $valo){$$chave = $valor;} } # recupera valores de post, get e cookies
tava faltando um "r" no final do valor
correto
if($_REQUEST){ foreach($_REQUEST as $chave => $valor){$$chave = $valor;} } # recupera valores de post, get e cookies
Eu to com mta dificuldade em aprender php, pq quando da erro ele simplesmente nao compila :(Creio que no seu codigo ai falta a conexao com o banco ne? os dados e etc...
Falta.. eu esqueci de postar vou ver se acho aqui o banco que eu estava usando e o arquivo que conecta ;)
Poww... eu queria saber como que faz sistema de registro aqui :(
Boas...É verdade no código dele ta faltando conectar-se com o Database (banco de ados) ;) Priemeiramente gostaria de me apresentar... muito prazer em fazer parte desse família do Imasters.To com grandes problemas em relçao a sistemas de login, quero implementar um em um site que to fazendo, porém não consegui ainda, alguem ai pode me ajudar...? como restringir uma determinada página, se alguem digitar a URL dela pelo broswer, cair na página de login.... se poderem me ajudar ficarei grato.Atenciosamente.
o script é interessante, consegui fazer funcionar aqui normalmente... mas o problema é que, toda vez que faço alguma coisa no painel de admin, acesso um link ou coisa do tipo, ele "desloga"... creio que possa ser algum problema em relação aos cookies, mas minha sabedoria quanto à cookies não é lá grande coisa... hehese puderem ajudar ;)amplexus...
No banco tem so os campos usuario e senha?
Na página logar.php qual o form action?
<form action="" method="post" name="login"> <div id="esquerdo"> <h1> Bem-vindo ao Painel de Controle!<p /> Digite seu nome de usuário e senha para acessar o painel administrativo. </h1> </div> <div id="direito"> <h1>Login</h1> <h2> Nome do úsuario:<br /> <input name="usuario" id="usuario" type="text" value="" /><p /> Senha:<br /> <input name="senha" id="senha" type="password" /><p /> <input id="enviar" name="Enviar" value="Enviar" type="submit"> </h2> </div> </form>
E como eu faço a conexão com o banco?
Super_zica_mennesse script o action dele é pra página que você tentou acessar antes. o que ele faz. quando você colocar o user e a senha e clica em logar .a pagina por padrão da o refresh. no arquivo proteger ele verifica se está vindo alguma coisa do form estando ele chama a função e faz a autenticação ou não. bem enquanto a tabela. sim você tem o campo usuário e senha ou o campo que você preferir para efetuar o login. enquando fazer a conexão bem é a conexão simples. mysql_connect("host", "user", "senha")mysql_select_db("tabela", parametro de conexão);espero ter ajudado.
Esse script usa outro script?Tá parecendo que tá faltando muita coisa aí.É pra usar junto com o do Fabyo?Putz, tá realmente difícil de encontrar um completo na web.De qualquer forma, valeu a iniciativa. :D
POw caras...
To muito afim de ver um desses realmente funfando!
Os que se logão por session eu tava dando uma olhada e
achei mais facil de entender...
Mas o que eu realmente to precisando é um script
desse que loga por cookies!
Gostaria de saber se alguém testou o script. Se há erros.
nknk, pegue o código e teste pra saber, a melhor forma de saber isso é você mesmo testando.
Comigo funcionou sem problemas, só tem que fazer uma tabela para o usuario (usuario, senha) e a conecção com o bd http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
olá,
aqui funcionou o codigo sim (colocando a conecção com o banco de dados). o sistema eh mto bom parabens!!
notei q faltou uma pagina para "sair", fiz uma aqui parece q deu certo. fiz assim:
sair.php
<?
setcookie("login","",time()-3600);
header("Location: index.php");
?>vlw!
quais são os campos do banco ?
>
olá,
aqui funcionou o codigo sim (colocando a conecção com o banco de dados). o sistema eh mto bom parabens!!
notei q faltou uma pagina para "sair", fiz uma aqui parece q deu certo. fiz assim:
sair.php
<?
setcookie("login","",time()-3600);
header("Location: index.php");
?>
creio q seja isso a funçao de sair.. axo q você nao viu http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
if(isset($deslog)){ # verifica se a variavel deslog existe se sim faça
$_COOKIE = array(); # elimina todos os cookies da pagina
setcookie("login","", time() - 1); # exclui o cookie
}Ola pessoal,
Não estou conseguindo usar este código, alguém poderia me dar um help?
Seguinte, criei o banco com id, usuario e senha, nome da tabela eu deixei como login. (resumindo, a conexão eu tb fiz, e esta conectando certinho)
Mas esta dando um erro no mysql_num_rows quando tento logar. Segue o erro.
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\wamp\www\ilc\proteger.php on line 25
a linha 25 é esta:
if(mysql_num_rows($sql) > 0){
Alguém pode me ajudar? Estou usando wampserver com php5
Abç
Nao tem algo faltando nesse seu codigo nao cara?Coloquei aqui e nao funcionou