Ja, gdy np. mam zapisywanie postów na forum, to po kolei sprawdzam czy po wysłaniu formularza wszystkie warunki są spełnione. Jest zmienna $zapisz = true; no i teraz lecimy: sprawdzam, czy użytkownik ma prawa pisać posty, czy użytkownik dodał nick, jeżeli jest niezalogowany, czy podał temat, czy podał treść postu, czy wcisnął zapisz czy podgląd - jeżeli gdzieś się coś nie zgadza, to $zapisz = false i blok kodu zapisujący post się nie wykona, ale mimo to sprawdzane są dalej wszystkie warunki dodania postu - a każdy dodaje jeden blok HTMLa z opisem błędu (gdy pracuje się z systemem szablonów, to jest to prostsze do stworzenia). Nie ma żadnych JSów, nie ma też żadnego przesyłania błędów w adresie strony - w końcu po to jest PHP, żeby kod sam generował błędy i je wyświetlał na stronie, a nie dopuszcał wtedy do wykonania określonej akcji.
Schemat wyglądał by tak:
$zapis = true;
$error = array();
if ( empty( $_POST['zmienna'] ))
{
$error[] = 'Brakuje nicku!';
$zapis = false;
}
if ( $forum['prawa'] != $prawa['gosc'] )
{
$error[] = 'Masz za małe prawa!';
$zapis = false;
}
... // i tak dalej, różne testy
if ( $zapis == true )
{
// tutaj np. zapis posta, albo coś innego i przekierowanie: header('Location: tresc.php');
}
else
{
echo '<h1>Błąd!</h1>' . implode('<hr>',$error);
}
// wyświetlanie normalnej zawartości strony, bo jezeli był błąd, to trzeba poprawić formularz, mozna do inputów powstadzać tekst który został przesłany metodą POST, zeby user nie wpisywał go drugi raz