Chciałem napisać prosty panel admina z logowaniem, z wykorzystaniem ciasteczek. Wszystko działa ładnie, ciasteczka, a właściwie jedno ciasteczko z hasłem działa tak długo jak trzeba, ale nie mogę go usunąć. Zrobiłem stronę 'logout.php', która ma za zadanie usunąć ciastko, przez co żeby się zalogować należy znowu wpisać hasło. PHP zacząłem poznawać dwa dni temu, więc nie linczujcie :>
pliki wyglądają następująco:
(sorki za te nie php-owe wcięcia w kodzie, ale jestem przyzwyczajony do stylu z C)
index.php
<?php
//jeśli ciasteczka się zgadzają to od razu zaloguj
include "pass.php";
if( isset($_COOKIE['hello_world']) && $_COOKIE['hello_world'] == $password)
{
include "welcome.php";
}
else //jeśli nie - wyświetl panel logowania
{
echo "<form action=\"login.php\" method=\"post\">
<input type=\"password\" name=\"pass\" size=\"15\">
<input type=\"submit\" value=\"Zaloguj\">
</form>";
}
?>
login.php
<?php
$pass = $_POST['pass'];
include "pass.php";
if(isset($pass))
{
if($pass == $password)
{
setcookie("hello_world", $pass, time() + 60);
include "welcome.php";
}
else
{
echo 'Hasło niepoprawne<br /><a href="index.php">Spróbuj ponownie</a>';
}
}
else
{
echo 'Hasło niepoprawne<br /><a href="index.php">Spróbuj ponownie</a>';
}
?>
pass.php
<?php
$password = "haslo"
?>
welcome.php
<?php
echo "Jesteś zalogowany<br /><br />";
echo "<a href=\"logout.php\">Wyloguj</a>";
?>
logout.php
<?php
setcookie("hello_world", "", time() -3600);
// komunikat
echo "Zostałeś wylogowany.<br /><br />";
echo "<a href=\"index.php\">Zaloguj ponownie</a>";
?>
Przy próbie wylogowania (usunięcia ciastka) wyskakuje strona z ostrzeżeniem, a ciastko pozostaje bez zmian:
Warning: Cannot modify header information - headers already sent by (output started at C:\Programy\VertrigoServ\www\site\admin\logout.php:1) in C:\Programy\VertrigoServ\www\site\admin\logout.php on line 2
You have been logged out.
Log in again