<?php
//parte riservata all'invio
//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_tel($t){
//guarda che verifica OK numeri solo composti da cartteriri numerici
//togli tutti gli spazi oltre all'eventuale primo e ultimo
//trasforma il numere es da 049 33344 a 04933344
$t=str_replace(" ","",$t);
if($t==""){
//c'erano solo spazi
//se il numero di telefono non è obbligatorio togli return "*#*";
return "";//non corretto vuoto
//e metti return "";
//stesso discorso per gli altri return "*#*";
}else{
//qui verifiche la lunghezza del numero
//eventualmente poi puoi variare la minima e la massima
$lungo=strlen($t);
if($lungo < 7 || $lungo > 15){
return "";//non corretto troppo corto o troppo lungo
}else{
$tel_valido="";
//verifico carattere per carattere
for($k=0; $k < $lungo; $k++){
if($t[$k] < "0" || $t[$k] > "9"){
//ho trovato un carattere che non è numerico esco senza proseguire
return "*#*";//trovato carattere non corretto
}else{
//ricostruisco il numero
$tel_valido.=$t[$k];
}
}//fine for
//a questo punto il numero è formamlmente corretto
//sarebbe da verificare che non sia es tutti 0
return $tel_valido;
}
}
}
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'];
$cognome=$_POST['realcognome'];
$email=$_POST['email'];
$messaggio=$_POST['messaggio'];
$tel=$_POST['telefono'];
//e li verifico
$nome=valida_nome($nome);
if($nome=="*#*"){//il nome è vuoto
$ok_ko.="<br>NON hai inserito il tuo nome";
}
$cognome=valida_nome($cognome);
if($cognome=="*#*"){//il nome è vuoto
$ok_ko.="<br>NON hai inserito il tuo cognome";
}
$email=valida_email($email);
if($email=="*#*"){//il nome è vuoto
$ok_ko.="<br>NON hai inserito l'indirizzo email o errato";
}
$tel=valida_tel($t);
if($tel=="*#*"){//il numero è vuoto o non corretto
$ok_ko.="<br>NON hai inserito il tuo numero di telefono o non corretto";
}
$messaggio=valida_testo($messaggio);
if($messaggio=="*#*"){//il nome è vuoto
$ok_ko.="<br>NON hai inserito il testo";
}
//fine verifiche se la variabile $ok_ko. è rimasta vuota tutto OK
//quindi posso spedire
if($ok_ko==""){
//preparo delle variabili chi mi possono servire
$destinatiario="email mia";//qui devi mettere il tuo indirizzo
$inviata_il="numero: ".$tel."<br>";//questa è per bellezza
$inviata_da="email da: ".$nome.$cognome."<hr>";
//$inviata_da="email da: ".$cognome."<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($destinatiario,$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=index.html'>";
//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;
}
?>