Ho messo le SESSIONI in modo che se il form viene compilato in modo errato, esce l'alert e l'utente viene rimandato al form. Il problema è che il form non mantiene i dati inseriti prima, vorrei che si svuoti solo se l'invio del form va a buon fine.
Posto una parte del form
...
<td><font size="2"><b>CITTA':</b><font color="#008080"></font>
</td>
<td><input name="citta" value="<?echo $_SESSION['citta'];?>" size="30" type="text" maxlength="15" onBlur="this.value=ignoreSpaces(this.value)">
</td>
<td><textarea name="messaggio" wrap="soft" cols="40" rows="10" onkeyup="conta(this.form)"
onblur="this.value=this.value.replace(/^\s*/,'')"><?echo $_SESSION['messaggio'];?></textarea>
</td>
...
Nella pag. che elabora il form (ins.php)
...
if($errore):
$tab_ins;
$meta="<META http-equiv=\"REFRESH\" content=\"3; url=http://www.miosito.altervista.org/guestbook/form.php\">";
//Fa mantenere i dati inseriti nel form dopo un'alert
session_start();
$_SESSION['nome'] = $nome;
$_SESSION['email'] = $email;
$_SESSION['url'] = $url;
$_SESSION['citta'] = $citta;
$_SESSION['messaggio'] = $messaggio;
else:
$nome = str_replace("\n","",$nome);
$citta = str_replace("\n","",$citta);
$url = str_replace("\n","",$url);
if(strpos($url, 'http') === false) $url = "http://$url";
$messaggio = str_replace("\n","",$messaggio);
$data=date("d/m/Y");
$orario=date("H.i");
$ip=$_SERVER['REMOTE_ADDR'];
$commento=$nome."|".$email."|".$citta."|".$url."|".$messaggio."|".$data."|".$orario."|".$ip."\n";
if(!(file_exists($file))){
fopen($file,"w");
}
// Scrittura del nuovo messaggio su file
$new_mess=fopen($file,"a+");
fwrite($new_mess,$commento);
fclose($new_mess);
$arr_mess=file($file);
$count=count($arr_mess);
$pagine_totali= ceil($count/$risultati_per_pagina);
$tab_ins= "<br><br><br><br><br><table width=\"400\"height=\"150\" align=\"center\"\" cellpadding=\"5\" cellspacing=\"0\" bordercolor=\"#0000FF\" bgcolor=\"#DDFBDB\" style=\"border:1px solid;\">";
$tab_ins .= "GRAZIE ".$nome." IL TUO MESSAGGIO E' STATO INSERITO";
$tab_ins .= "</td></tr></table><br><br><br>";
$meta="<META http-equiv=\"REFRESH\" content=\"3; url=http://www.miosito.altervista.org/guestbook/form.php\">";
if($meta){
//Distrugge tutti i dati registrati in una sessione e il form si svuota
session_start();
$_SESSION['nome'] = $nome;
$_SESSION['email'] = $email;
$_SESSION['url'] = $url;
$_SESSION['citta'] = $citta;
$_SESSION['messaggio'] = $messaggio;
session_destroy();
}
...