Autenticação do username e password

joaopj

Power Member
Olá pessoal, eu tenho cá umas dúvidas.
Eu tenho uma página que só deve ser acessada por mim, e já tentei o metodo do .htaccess, mas isto não funciona lá muito bem, porque vou sempre parar à página de erros 401 que diz autorização requerida, então estou a tentar fazer isto em PHP.

Quando alguém entrar na página, vai-se deparar com o "index.html", que é o seguinte:
Código:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
  <title>Olá João</title>
  <meta name="GENERATOR" content="Quanta Plus" />
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <style type="text/css">
  /* <![CDATA[ */
body{background:#211E20 url('bg-stripe.png') repeat;color:#AFAFAF;font-family:Verdana;}
#wrap{margin:0 auto;width:800px;}
input{width:800px;font-size:4em; border:1px #9F0 dashed;background:#211E20 url('bg-stripe.png') repeat;color:#F90; margin-top:1em;text-align:center;}
  /* ]]> */
  </style>
</head>
<body>
<div id="wrap">
    <form action="createpost.php" method="post">
        <input id="username" type="text" name="username" size="16" /><br />
        <input id="password" type="password" name="password" size="16" /><br />
        <input type="submit" value="Entrar" />
    </form>
</div>

</body>
</html>

Como podem ver, nesta form só há um espaço para inserir um username e a password, e depois "exportá-los" para o "createpost.php" que está no mesmo folder (será que isto é boa ideia ?).

Depois de inserir o username e a password, vamos ao "createpost.php", onde eu tentei fazer lá a autenticação... que deve tar uma boa marmelada lol...

No topo do file, temos isto:
PHP:
<?php
// ob_start("ob_gzhandler");
$username = "username";
$password = "password";

if (!isset($_POST["username"]) && !isset($_POST["password"])) { header('http://joaojeronimo.freehostia.com/errors/?error=401'); exit; }
if ($_POST["username"] == $username && $_POST["password"] == $password) { $rejeitado = FALSE; } else { $rejeitado = TRUE; }
if ($rejeitado) { header('Location: http://joaojeronimo.freehostia.com/errors/password-errada.html'); exit; }

header("Cache-Control: no-cache, must-revalidate");
header('Content-type: text/html; charset=UTF-8');
print "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n";
?>

Isto está certo ?
Até ao momento parece funcionar no entanto ainda é possivel entrar directamente na página sem passar pelo "index.html", o que significa que o
PHP:
if (!isset($_POST["username"]) && !isset($_POST["password"])) { header('http://joaojeronimo.freehostia.com/errors/?error=401'); exit; }
não está a funcionar...

É a primeira vez que estou a aventurar-me a fazer uma coisa destas e gostaria da vossa ajuda para fazer a minha página mais "hacker proof" lol...

Obrigado
 
Back
Topo