Área Restrita em PHP

12 respostas
B

Olá Gujers.

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

12 Respostas

E

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

H

Este é o html de login:

<html>
<head>
<title>...::: Meu Site :::...</title>
</head>

<body leftmargin="0" topmargin="0" bgcolor="#ffffff" marginheight="0" marginwidth="0">
<div align="center">
  <table width="99%" border="0">
    <tr>
      <td width="12%">
      </td>
      <td colspan="2"><p><font size="5" face="Verdana, Arial, Helvetica, sans-serif"><strong><font size="7">S</font>ISTEMA <font size="7">I</font>NTEGRADO
              DE <font size="7">S</font>EGURAN&Ccedil;A AO <font size="7">A</font>QUARTELAMENTO</strong></font></p>
          <p align="left"><font size="4" face="Verdana, Arial, Helvetica, sans-serif"><em>A
                Tecnologia em prol da Seguran&ccedil;a e do Controle de Fluxo
                de Pessoal.</em></font></p>
      </td>
    </tr>
    <tr>
      <td height="23" colspan="3"><div align="center"></div>
</td>
    </tr>
    <tr>
      <td height="100%" colspan="3">
        <iframe src="exibir_dados_ssa.php"  bgcolor="0" name="f_central" width="100%" height="100%" ></iframe>
      </td>
    </tr>
  </table>
</div>
</body>
</html>

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):

<?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 "<html><body>";
  echo "<p aling=\"center\">Usuário não encontrado!</p>";
  echo "<p aling=\"center\"><a href=\"login.html\">Voltar</a></p>";
  echo "</body></html>";
}
else
{
  if($senha != mysql_result($resultado, 0, "senha")) // confere senha
  {
    echo "<html><body>";
    echo "<p aling=\"center\">A senha está incorreta!</p>";
    echo "<p aling=\"center\"><a href=\"login.html\">Voltar</a></p>";
    echo "</body></html>";
  }
  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);
?>

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):
<?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&ecirc; n&atilde;o efetuou login no sistema!";
      exit;
    }
  }
  else
  {
    setcookie("usuario");
    setcookie("senha");
    echo "Voc&ecirc; n&atilde;o efetuou login no sistema!";
    exit;  
  }
}
else
{
  echo "Voc&ecirc; n&atilde;o efetuou login no sistema!";
  exit;
}

mysql_close($conexao);

?>

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

M

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

M

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,

L

Olá

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 :)

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

R

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:

M

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

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

Recomendo.

B

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

M

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

Até!

C

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

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

W

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!

B

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

Criado 19 de maio de 2008
Ultima resposta 23 de mai. de 2008
Respostas 12
Participantes 10