salve a tutti,
ho creato il seguente codice
Codice PHP:
$path= "http://";
$path .= $_SERVER['HTTP_HOST'];
$uri = $_SERVER['REQUEST_URI'];
$path .= $uri;
function settato($str){
if(isset($_POST['cancel'])){
$str="";
}
if(isset($str)){
return($str);
}
}
function error($str){
if(isset($_POST['obj_submit'])){
if (empty($str)){
$error="<span style=\"color:red\">Campo vuoto</span>";
}
}
return ($error);
}
if(isset($_POST['obj_submit'])){
$post = $_POST;
foreach ( $post as $key => $value) {
if(substr($key,0,4) != 'obj_'){
if(empty($value)){
$t++;
}
}
}
}
$nome= htmlspecialchars(trim($_POST['nome']));
$mail= htmlspecialchars(trim($_POST['mail']));
$sito= htmlspecialchars(trim($_POST['obj_sito']));
$motivo= htmlspecialchars(trim($_POST['motivo']));
$commento= htmlspecialchars(trim($_POST['commento']));
if(isset($_POST['obj_submit'])){
session_start();
$codiceverifica= $_POST['codiceverifica'];
if(sha1($codiceverifica) != $_SESSION['control']){
if($codiceverifica != ""){
$error_code= "<span style=\"color:red\">Campo non corretto</span>
";
$t++;
}
}
}
if(isset($mail) AND $mail != ""){
if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $mail)){
$error_mail="<span style=\"color:red\">Email scritta non correttamente</span>";
$t++;
}
}
if(isset($_POST['obj_submit']) AND $t==0){
$header = "From: Atuttascienza<$mail>\r\n";
$subject= "Contatti Atuttascienza";
$to="atuttascienza@live.it";
$messaggio="Questo messaggio ti è stato inviato dal sito!!!\n\nNOME: $nome\n\nMAIL: $mail\n\nSito web:$sito\n\nMotivo:$motivo\n\nCommento:\n$commento";
if($t ==0){
mail($to ,$subject, $messaggio, $header);
$path= base64_encode($path);
header("location:inviato.php?path=$path");
}
}
echo "<a name=\"contatti\"></a>";
echo "<form name=\"form1\" action=\"contatti.php#contatti\" method=\"post\">";
if ($t > 0){
echo "<h1 class=\"error\"><u>ATTENZIONE !!! Ci sono campi vuoti o non corretti !!!</u></h1>
";
}
echo"
Nome:
<input type=\"text\" name=\"nome\" value=\"". settato($nome) ."\" size=\"20\"> ".error($nome)."</p>
E - mail:
<input type=\"text\" name=\"mail\" value=\"".settato($mail)."\" size=\"30\"> ".error($mail)." $error_mail</p>
Sito web [b](facoltativo)[/b]:
<input type=\"text\" name=\"obj_sito\" value=\"".settato($sito)."\" size=\"34\"></p>
Motivo:
<select name='motivo'>
<option value=\"".settato($motivo)."\" >".ucfirst(settato($motivo))."
<option value='no' disabled>- - - - - - - - - - -
<option value = 'problemi tecnici' >Problemi tecnici
<option value = 'commento sul sito' >Commento sul sito
<option value = 'suggerimenti' >Suggerimenti
<option value = 'curiosità' >Curiosità
<option value = 'altro' >Altro
</select> ".error($motivo)."</p>
Commento:
<textarea cols=\"36\" rows=\"3\" name=\"commento\">".settato($commento)."</textarea> ".error($commento)."</p>
Codice di sicurezza:
<img src=\"http://www.atuttascienza.altervista.org/secur/captcha.php\" width=\"200\" height=\"60\" alt=\"Immagine captcha\">
Inserisci il codice in figura:
<input type=\"text\" name=\"codiceverifica\" size=\"25\"> ".error($codiceverifica)." $error_code</p>
<input type=\"submit\" name=\"obj_submit\" value=\"Invia\">
<input type=\"submit\" name=\"cancel\" value=\"Cancella\"></form>
</div></div>
";
mi permette di gestire un form controllando eventuali campi vuoti o mail scritte non correttamente..
il controlllo dei campi vuoti è affidato al foreach che me li somma e ad una funzione error che mi segnala il campo errato direttamente vicino al campo stesso..
in più ho una funzione settato che mi funziona cosi: se ci sono errori nel form i campi privi di errrore mi rimangono compilati in modo che l'utente non li debba di nuovo compilare....
il tasto cancel agisce sempre nella funzione settato in modo che il campo venga azzerato se viene premuto...
se i campi sono vuoti il cancel ha questo effetto..
se la mail non è scritta correttamente invece il cancel premendolo una volta non cancella in campo ma lo lascia vuoto segnalandomi ancore l'errore emailnon scritta correttamente. ho bisogno di nuovo di premere una seconda volta il bottone per azzerarlo...come ovviare al problema.
quindi se premo cancel in campi vuoti vengo azzerati ad eccezione delle mail non scritte correttamente che per azzerarle ho bisogno di premere una seconda volta il bottone