<?php
//qui scrivi le funzioni di controllo di quanto immesso nel form
function valida_email($em){//verifica che l'indirizzo email sia sintatticamente corretto
$em=filter_var($em, FILTER_SANITIZE_EMAIL);
if(!filter_var($em, FILTER_VALIDATE_EMAIL)){
return "*#*";//indirizzo non corretto
}else{
return $em;//indirizzo corretto
}
}
function valida_nome($no){
//suddivido per "didattica", ma poi puoi semplificare
$no=trim($no);//tolgo gli spazi iniziali e finali, si vuota se messo solo spazi
$no=strip_tags($no);//tolgo tutti i tag html
if($no==""){
return "*#*";//non è stato inserito il nome o solo spazi
}else{
return $no;//il nome non dovrebbe essere pericoloso e contiene qualcosa
}
}
function valida_oggetto($ob){
//suddivido per "didattica", ma poi puoi semplificare
$ob=trim($ob);//tolgo gli spazi iniziali e finali, si vuota se messo solo spazi
$ob=strip_tags($ob);//tolgo tutti i tag html
if($ob==""){
return "*#*";//non è stato inserito il nome o solo spazi
}else{
return $ob;//il nome non dovrebbe essere pericoloso e contiene qualcosa
}
}
function valida_testo($tx){
$tx=trim($tx);
$tx=strip_tags($tx, "<br> <p>");
//in questo modo tolgo tutti i tag esclusi qulle di fine liena e paragrafo
//nel caso l'inio sia in formato html
if($tx==""){
return "*#*";//non è stato inserito alcun testo o solo spazi
}else{
return $tx;//il testo non dovrebbe essere pericoloso e contiene qualcosa
}
}
//fine funzioni controllo sono il minimo del fattibile
//qui inizio a raccogliere i dati inviati dal form
if(isset($_POST['invio'])){//è stato premuto il tasto di submit
//attenta i nomi dentro $_POST devono corrispondere esattamente ai nomi dei campi del form
//metto a stinga vuota una variabile che mi servirà in seguito
$ok_ko.="";
$nome=$_POST['realname'];
$email=$_POST['email'];
$subject=$_POST['subject'];
$messaggio=$_POST['messaggio'];
$privacy=$_POST['privacy'];
//e li verifico
$nome=valida_nome($nome);
if($nome=="*#*"){//il nome è vuoto
$ok_ko.="<br>NON hai inserito il tuo nome e cognome";
}
$email=valida_email($email);
if($email=="*#*"){//il nome è vuoto
$ok_ko.="<br>NON hai inserito l'indirizzo email o errato";
}
$subject=valida_oggetto($subject);
if($subject=="*#*"){//il nome è vuoto
$ok_ko.="<br>NON hai inserito l'oggetto del messaggio o errato";
}
$messaggio=valida_testo($messaggio);
if($messaggio=="*#*"){//il nome è vuoto
$ok_ko.="<br>NON hai inserito il testo";
}
if($privacy !="ok"){//se diverso da ok privacy non spuntata
$ok_ko.="<br>NON hai accettato la privacy";//o il testo che preferisci
}
//fine verifiche se la variabile $ok_ko è rimasta vuota tutto OK
//quindi posso spedire
if($ok_ko==""){
//preparo delle variabili chi mi possono servire
$destinatario="pippopippo@gmail.com";//qui devi mettere il tuo indirizzo
$inviata_il="email inviata il ".date("d/m/y",time())."<br>";//questa è per bellezza
$inviata_da="email da: ".$email."<hr>";
$oggetto= "richiesta informazioni";//o altro messaggio
//nel messaggio concateno alcune variabili ottenendo il testo da inviare
$testo=$inviata_il.$inviata_da.nl2br($messaggio);
//invio in formato html
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";
$headers .= "From: $nome <$email>" . "\r\n";
//e qui ti uso la nativa mail() poi visto che l'appetito vien mengiando....
//prima o poi passere alla classe maillerphp
//tento l'invio
if(mail($destinatario,$oggetto,$testo,$headers)){
$ok_ko.="<br>Grazie per avermi contattato<br>ti risponderò quanto prima";
}else{
$ok_ko.="<br>c'é stato un errore di trasmissione: riprova più tardi";
}
}
//mostri l'avviso se OK o KO
echo $ok_ko;
//e ritorni al form pulito
echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
//se fai due pagine al posto di ".htmlspecialchars($_SERVER['PHP_SELF'])."
//il nome della pagina del form es. URL=contattami.htm
//se vuoi aumentare o diminuire il tempo di permanenza dell'avviso
//modifica il valore di content='4; es. content='2;
}
?>
<div id="container">
<form method='post' action='<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>'>
<p> Nome e Cognome:</p>
<input type=text name="realname">
<p>Email:</p>
<input type=text name="email">
<p>Oggetto:</p>
<input type=text name="subject">
<p>Messaggio:</p>
<textarea name="messaggio" cols="40" rows="5"></textarea>
<br>
<br>
<input name="privacy" type="checkbox" value="ok">
<br />
<input type="Submit" value="invio" name="invio">
</form>