Mam problem z obsługą sesji. W pliku form.html znajduje się prosty formularza logowania:
<?php
session_start();
require_once('database.html');
require_once('header.html');
?>
<form action="login.html" method="post"> Nazwa użytkownika
<input type="text" name="login" value="" /><br />Hasło
<input type="text" name="password" value="" /><br />Captcha
<input type="text" name="captcha" value="" /><br /><input type="submit" value="Logowanie" /></td> <?php
if(!empty($_SESSION))
{
echo('Błąd logowania. Niepoprawny login lub hasło. Prosimy spróbować ponownie.');
}?>
Skrypt w pliku przetwarza dane:
<?php
$_SESSION['started'] == true;
[...]
header("Location: profile.html");
Profile.html sprawdza sesję:
if($_SESSION['started'] == 'true');
{
if(!empty($_SESSION['login'])) {
echo('<a href="logout.html">Wyloguj</a>'); }
else {
header("Location: form.html"); }
Jeżeli w form.html wpiszę błędne dane to zostaję automatycznie, w ułamku sekundy przekierowany z powrotem. Niestety, komunikat o błędzie się nie wyświetla, sesja nie działa poprawnie. Dlaczego? Przecież skrypt przechodzi całą ścieżkę form.html » login.html » profile.html » form.html, a wszystkie zaczynają się od session_start();
Na marginesie: czy jest jakiś lepszy niż sesje sposób przekazania komunikatu o błędzie pomiędzy skryptami?