Área Restrita em PHP

Olá Gujers.

Alguém ai tem um script de área restrita que funcione 100%!!!
Valeu a atenção.
8)

Da uma olhada em www.phpbrasil.com, www.imasters.com.br esses sites costumam ter um bom repositório de scripts :wink:

Este é o html de login:

[code]

...::: Meu Site :::...

SISTEMA INTEGRADO DE SEGURANÇA AO AQUARTELAMENTO

A Tecnologia em prol da Segurança e do Controle de Fluxo de Pessoal.

[/code]

Aqui faz a conexão com o banco de dados (conecta_mysql.inc):

<?php $conexao = mysql_connect ("localhost", "username", "passw"); mysql_select_db ("basededados"); ?>

Recebe os dados de login e redireciona (login.php):

[code]<?php
// obtém os valores digitados
$usuario = $_POST[“usuario”];
$senha = $_POST[“senha”];

// acesso ao banco de dados
include “conecta_mysql.inc”;
$resultado = mysql_query(“SELECT * FROM acesso WHERE usuario=’$usuario’”);
$linhas = mysql_num_rows($resultado);
if($linhas==0) // testa se a consulta retornou algum registro
{
echo “”;
echo “<p aling=“center”>Usuário não encontrado!

”;
echo “<p aling=“center”><a href=“login.html”>Voltar”;
echo “”;
}
else
{
if($senha != mysql_result($resultado, 0, “senha”)) // confere senha
{
echo “”;
echo “<p aling=“center”>A senha está incorreta!”;
echo “<p aling=“center”><a href=“login.html”>Voltar”;
echo “”;
}
else // usuário e senha corretos. Vamos criar os cookies
{
setcookie(“usuario”, $usuario);
setcookie(“senha”, $senha);
// direciona para a página inicial dos usuários cadastrados
header(“Location: principal.php”);
}
}
mysql_close($conexao);
?>[/code]

Isto você inclui no cabeçalho (antes da tag ) de todas as páginas que apenas os usuários cadastrados têm acesso:

<?php include "valida_cookies.inc"; ?>

Este valida se os cookies existem na máquina do usuário (valida_cookies):

[code]

<?php if(IsSet($_COOKIE["usuario"])) $usuario = $_COOKIE["usuario"]; if(IsSet($_COOKIE["senha"])) $senha = $_COOKIE["senha"]; if(!(empty($usuario) OR empty($senha))) { include "conecta_mysql.inc"; $resultado = mysql_query("SELECT * FROM acesso WHERE usuario='$usuario'"); if(mysql_num_rows($resultado)==1) { if($senha != mysql_result($resultado, 0, "senha")) { setcookie("usuario"); setcookie("senha"); echo "Você não efetuou login no sistema!"; exit; } } else { setcookie("usuario"); setcookie("senha"); echo "Você não efetuou login no sistema!"; exit; } } else { echo "Você não efetuou login no sistema!"; exit; } mysql_close($conexao); ?>[/code]

Bom, este eu utilizei baseado num livro de PHP. Existe outra maneira de fazer isto com sessões que é mais seguro.

Espero ter ajudado, fico na dúvida se esta era realmente sua dúvida.

Atenciosamente,
Leonardo A. Santos

Mandar uma senha no cookie não é nem um pouco seguro, é melhor você ir devolver esse livro aí a livraria :slight_smile:

Pois é, esta área restrita esta furada…

Existe um repositório de bibliotecas para php no link http://pear.php.net/

Biblioteca de Auenticação
http://pear.php.net/manual/en/package.authentication.auth.intro.php

Sds,

Olá

[quote=Maurício Linhares]Mandar uma senha no cookie não é [b]nem um pouco seguro[/b], é melhor você ir devolver esse livro aí a livraria :)[/quote]

Tenho muitos livros. Muitos eu não li por inteiro. Mas o pior dos livros que comprei e que nem abri, era justamente um de PHP. Era uma tradução. Quando cheguei em casa vindo da livraria, fui buscar o site da autora e lá encontrei uma mensagem em letras garrafais em vermelho renegando a tradução brasileira dizendo que não reconhecia o resultado como o seu livro. Isto me obrigou a comprar outro só para saber como PHP é feio (que o código anterior só confirma)

[]s
Luca

E nunca utilize include de arquivos com extensao .inc , posso muito bem baixar esse arquivo e olhar o codigo fonte arquivos .inc nao sao interpretados utilize .php :stuck_out_tongue:

Vamos falar de um livro bom para php então.

http://www.computer-books.us/php_2.php

Recomendo.

Bom usar cooki ou não?
Qual o méotdo mais seguro?

Senha no cookie? Nunca!
Depois de confirmar o login, quarde somente a autorização na sessão e trabalhe com isso.

Até!

Da uma olha no manual do php sobre headers, da pra você economizar até um form.

 &lt;?php
    if (!isset($_SERVER['PHP_AUTH_USER'])) {
        header(&quot;WWW-Authenticate: Basic realm=\&quot;Private Area\&quot;&quot;);
        header(&quot;HTTP/1.0 401 Unauthorized&quot;);
        // only reached if authentication fails
        print &quot;Sorry - you need valid credentials granted access to the private area!\n&quot;;
        exit;
    } else {
        // only reached if authentication succeeds
        print &quot;Welcome to the private area, {$_SERVER['PHP_AUTH_USER']} - you used {$_SERVER['PHP_AUTH_PW']} as your password.&quot;;
    }
?&gt; 

da uma olhada aqui tambem, tem alguns exemplos: http://www.hudzilla.org/phpbook/read.php/15_4_3

O exemplo ainda por cima incentiva formatação através de tags HTML, coisa que não tem cabimento hoje em dia.

Esse livro é ruim mesmo!

Achei um exemplo bom no site:
www.phpbrasil.com