Certo che ci sono. Bhe, non ti fanno aprire le pop-up ma è cmq possibile visualizzare gli errori.

Io faccio così:

1) Preparo una pagina per i controlli
All'interno di questa pagina prima di ogni operazione setto una variabile $ctrl = 1 (non ci sono errori)

faccio i miei controlli: se trovo errori setto $ctrl = 0 ed attivo un messaggio di errore.

Prima di eseguire l'operazione che devo fare (es salvataggio) faccio un controllo sulla variabile $ctrl:

if ($ctrl == 1)
{
salva
cancella tutte le variabili del form ($_POST[''])
}

Questo è per quello che riguarda il file di controllo e salvataggio.

Un altro file, invece, contiene il form.

All'interno di questo file, prima del form c'è un controllo come questo:

if (isset($_GET['op']) && $_GET['op'] == go)
{
include ('file_di_controllo_e_salvataggio.inc.php');
}

Perchè questo?
Perchè per aprire la pagina del form scrivo form.php ma quando clicco sul pulsante invia l'url sarà form.php?op=go

In questo modo quando il form viene "ricaricato" mi trovo incluso file_di_controllo_e_salvataggio.inc.php che fa gli opportuni controlli.

Se ha trovato errori ha attivato il messaggio di errore e quindi prima del campo corrispondente con un semplice controllo isset sulla variabile dell'errore posso stampare l'errore stesso.
Allo stesso modo mi troverò ancora attive le variabili passate tramite $_POST[].
Quindi, sempre con un controllo isset su di esse, posso stamparle nel caso in cui esistano.
Nel caso in cui tutto sia andato a buon fine, invece, il file di controllo avrà memorizzato le variabili nel db e èpoi le avrà cancellate e quindi esse non esisteranno più e non verranno più stampate.

Ora può capitare che tu abbia un modulo con parecchi campi e quindi potrebbe essere scocciante fare l'unest per ognuno. Io, quindi, mi sono fatto questo sript che cancella automaticamente tutte le variabili $_POST che esistono. Te lo post:

codice:
while (list($var) = each ($_POST))
     {
	unset($_POST["$var"]);
     }
Nel caso in cui non avessi capito qualcosa posta che te lo spiego meglio. Ciao!