[PHP] Validazione e invio campi form.

Samuele Ronzani

Nuovo Utente
7 Ott 2016
14
0
1
23
Buongiorno,
Ho questo codice PHP che invia i dati che vengono inseriti all'interno di un <form> e li invia alla mai : mail@diesempio.it; il mio problema è che non riesco a fare in modo che prima di inivare la mail non controlla se il $nome è vuoto o il $cognome è vuoto o se la $mail contiene una "@".
E' possibile?

Codice:
PHP:
<?php

// L'INDIRIZZO DEL DESTINATARIO DELLA MAIL

$to = "info@ronzanisamuele.it";

// IL SOGGETTO DELLA MAIL

$nome = $_POST['nome'];
$cognome= $_POST['cognome'];
$numero= $_POST['numero'];
$subject = "Ricetta richiesta in data " . date ("d/m/Y") . " da " . $nome . " " . $cognome;

// COSTRUIAMO IL CORPO DEL MESSAGGIO

$body = "Contenuto del modulo:\n\n";
$body .= "Nome: " . trim(stripslashes($_POST["nome"])) . "\n";
$body .= "Cognome: " . trim(stripslashes($_POST["cognome"])) . "\n";
$body .= "Numero di telefono: " . trim(stripslashes($_POST["prefisso"])) . " " . $numero . "\n";
$body .= "E-mail: " . trim(stripslashes($_POST["email"])) . "\n\n";
$body .= "1) Farmaco e Dosaggio: " . trim(stripslashes($_POST["farmaco1"])) . "\n";
$body .= "1) Formulazione: " . trim(stripslashes($_POST["formulazione1"])) . "\n";
$body .= "1) Confezioni: " . trim(stripslashes($_POST["confezioni1"])) . "\n\n";
$body .= "2) Farmaco e Dosaggio: " . trim(stripslashes($_POST["farmaco2"])) . "\n";
$body .= "2) Formulazione: " . trim(stripslashes($_POST["formulazione2"])) . "\n";
$body .= "2) Confezioni: " . trim(stripslashes($_POST["confezioni2"])) . "\n\n";
$body .= "3) Farmaco e Dosaggio: " . trim(stripslashes($_POST["farmaco3"])) . "\n";
$body .= "3) Formulazione: " . trim(stripslashes($_POST["formulazione3"])) . "\n";
$body .= "3) Confezioni: " . trim(stripslashes($_POST["confezioni3"])) . "\n\n";
$body .= "4) Farmaco e Dosaggio: " . trim(stripslashes($_POST["farmaco4"])) . "\n";
$body .= "4) Formulazione: " . trim(stripslashes($_POST["formulazione4"])) . "\n";
$body .= "4) Confezioni: " . trim(stripslashes($_POST["confezioni4"])) . "\n\n";
$body .= "5) Farmaco e Dosaggio: " . trim(stripslashes($_POST["farmaco5"])) . "\n";
$body .= "5) Formulazione: " . trim(stripslashes($_POST["formulazione5"])) . "\n";
$body .= "5) Confezioni: " . trim(stripslashes($_POST["confezioni5"])) . "\n";

// INTESTAZIONI SUPPLEMENTARI

$headers = "From: Modulo utenti<modulo@sito.it>";

// INVIO DELLA MAIL

if(@mail($to, $subject, $body, $headers)) { // SE L'INOLTRO È ANDATO A BUON FINE...

echo "La mail è stata inoltrata con successo.";

} else {// ALTRIMENTI...

echo "Si sono verificati dei problemi nell'invio della mail.";

}
?>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.041
146
63
PR
www.borgo-italia.it
ciao
io faccio così (schematicamente):
PHP:
<?php
//....
$nome = $_POST['nome'];
$cognome= $_POST['cognome'];
$numero= $_POST['numero'];
$email=$_POST["email"];
$errore="";
if(empty(trim($nome))){$errore.="non hai inserito il nome";}
if(empty(trim($cognome))){$errore.="non hai inserito il cognome";}
if(empty(trim($numero))){$errore.="non hai inserito il telefono";}
$email=filter_var($email,FILTER_SANITIZE_EMAIL);
if(!filter_var($email,FILTER_VELIDATE_EMAIL)){"email non valido o vuoto";}
if($errore !=""){
    echo $errore;
    //e rimandi al form   
}else{
    //tutto l'ambaradan per l'invio
}
//....
?>
poi un picolo consiglio: abbandona la funzione mail() e usa la classe maillerphp
 

Samuele Ronzani

Nuovo Utente
7 Ott 2016
14
0
1
23
Perdonami,
Ma forse ho fatto un casino.
Ho aggiunto come da tue indicazioni i il codice:
PHP:
<?php

// L'INDIRIZZO DEL DESTINATARIO DELLA MAIL

$to = "info@ronzanisamuele.it";

// IL SOGGETTO DELLA MAIL

$nome = $_POST['nome'];
$cognome= $_POST['cognome'];
$numero= $_POST['numero'];
$subject = "Ricetta richiesta in data " . date ("d/m/Y") . " da " . $nome . " " . $cognome;

//CONTROLLO FORM
$nome = $_POST['nome'];
$cognome= $_POST['cognome'];
$numero= $_POST['numero'];
$email=$_POST["email"];
$errore="";
if(empty(trim($nome))){$errore.="non hai inserito il nome";}
if(empty(trim($cognome))){$errore.="non hai inserito il cognome";}
if(empty(trim($numero))){$errore.="non hai inserito il telefono";}
$email=filter_var($email,FILTER_SANITIZE_EMAIL);
if(!filter_var($email,FILTER_VELIDATE_EMAIL)){"email non valido o vuoto";}
if($errore !=""){
    echo $errore;
   
// COSTRUIAMO IL CORPO DEL MESSAGGIO

$body = "Contenuto del modulo:\n\n";
$body .= "Nome: " . trim(stripslashes($_POST["nome"])) . "\n";
$body .= "Cognome: " . trim(stripslashes($_POST["cognome"])) . "\n";
$body .= "Numero di telefono: " . trim(stripslashes($_POST["prefisso"])) . " " . $numero . "\n";
$body .= "E-mail: " . trim(stripslashes($_POST["email"])) . "\n\n";
$body .= "1) Farmaco e Dosaggio: " . trim(stripslashes($_POST["farmaco1"])) . "\n";
$body .= "1) Formulazione: " . trim(stripslashes($_POST["formulazione1"])) . "\n";
$body .= "1) Confezioni: " . trim(stripslashes($_POST["confezioni1"])) . "\n\n";
$body .= "2) Farmaco e Dosaggio: " . trim(stripslashes($_POST["farmaco2"])) . "\n";
$body .= "2) Formulazione: " . trim(stripslashes($_POST["formulazione2"])) . "\n";
$body .= "2) Confezioni: " . trim(stripslashes($_POST["confezioni2"])) . "\n\n";
$body .= "3) Farmaco e Dosaggio: " . trim(stripslashes($_POST["farmaco3"])) . "\n";
$body .= "3) Formulazione: " . trim(stripslashes($_POST["formulazione3"])) . "\n";
$body .= "3) Confezioni: " . trim(stripslashes($_POST["confezioni3"])) . "\n\n";
$body .= "4) Farmaco e Dosaggio: " . trim(stripslashes($_POST["farmaco4"])) . "\n";
$body .= "4) Formulazione: " . trim(stripslashes($_POST["formulazione4"])) . "\n";
$body .= "4) Confezioni: " . trim(stripslashes($_POST["confezioni4"])) . "\n\n";
$body .= "5) Farmaco e Dosaggio: " . trim(stripslashes($_POST["farmaco5"])) . "\n";
$body .= "5) Formulazione: " . trim(stripslashes($_POST["formulazione5"])) . "\n";
$body .= "5) Confezioni: " . trim(stripslashes($_POST["confezioni5"])) . "\n";

}else{
// INTESTAZIONI SUPPLEMENTARI

$headers = "From: Modulo utenti<modulo@sito.it>";

// INVIO DELLA MAIL

   
if(@mail($to, $subject, $body, $headers)) { // SE L'INOLTRO È ANDATO A BUON FINE...

echo "La mail è stata inoltrata con successo.";
// ALTRIMENTI...

echo "Si sono verificati dei problemi nell'invio della mail.";

}
}
?>
Continua a darmi un errore, non saprei nemmeno se l'ho impostato come mi hai istruito tu.
Mi potresti scrivere il codice completo? :)
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.041
146
63
PR
www.borgo-italia.it
ciao
PHP:
<?php
//....
$nome = $_POST['nome'];
$cognome= $_POST['cognome'];
$numero= $_POST['numero'];
$email=$_POST["email"];
$errore="";
if(empty(trim($nome))){$errore.="non hai inserito il nome";}
if(empty(trim($cognome))){$errore.="non hai inserito il cognome";}
if(empty(trim($numero))){$errore.="non hai inserito il telefono";}
$email=filter_var($email,FILTER_SANITIZE_EMAIL);
if(!filter_var($email,FILTER_VALIDATE_EMAIL)){$errore.="email non valido o vuoto";}
if($errore !=""){
    echo $errore;
    //e rimandi al form  con un link o in automatico
}else{
    $to = "info@ronzanisamuele.it";
    $body = "Contenuto del modulo:\n\n";
    $body .= "Nome: " . trim(stripslashes($_POST["nome"])) . "\n";
    $body .= "Cognome: " . trim(stripslashes($_POST["cognome"])) . "\n";
    $body .= "Numero di telefono: " . trim(stripslashes($_POST["prefisso"])) . " " . $numero . "\n";
    $body .= "E-mail: " . trim(stripslashes($_POST["email"])) . "\n\n";
    $body .= "1) Farmaco e Dosaggio: " . trim(stripslashes($_POST["farmaco1"])) . "\n";
    $body .= "1) Formulazione: " . trim(stripslashes($_POST["formulazione1"])) . "\n";
    $body .= "1) Confezioni: " . trim(stripslashes($_POST["confezioni1"])) . "\n\n";
    $body .= "2) Farmaco e Dosaggio: " . trim(stripslashes($_POST["farmaco2"])) . "\n";
    $body .= "2) Formulazione: " . trim(stripslashes($_POST["formulazione2"])) . "\n";
    $body .= "2) Confezioni: " . trim(stripslashes($_POST["confezioni2"])) . "\n\n";
    $body .= "3) Farmaco e Dosaggio: " . trim(stripslashes($_POST["farmaco3"])) . "\n";
    $body .= "3) Formulazione: " . trim(stripslashes($_POST["formulazione3"])) . "\n";
    $body .= "3) Confezioni: " . trim(stripslashes($_POST["confezioni3"])) . "\n\n";
    $body .= "4) Farmaco e Dosaggio: " . trim(stripslashes($_POST["farmaco4"])) . "\n";
    $body .= "4) Formulazione: " . trim(stripslashes($_POST["formulazione4"])) . "\n";
    $body .= "4) Confezioni: " . trim(stripslashes($_POST["confezioni4"])) . "\n\n";
    $body .= "5) Farmaco e Dosaggio: " . trim(stripslashes($_POST["farmaco5"])) . "\n";
    $body .= "5) Formulazione: " . trim(stripslashes($_POST["formulazione5"])) . "\n";
    $body .= "5) Confezioni: " . trim(stripslashes($_POST["confezioni5"])) . "\n";
    // INTESTAZIONI SUPPLEMENTARI
    $headers = "From: Modulo utenti<modulo@sito.it>";
    // INVIO DELLA MAIL
    //togli il silent
    if(mail($to, $subject, $body, $headers)) { // SE L'INOLTRO È ANDATO A BUON FINE...
        echo "La mail è stata inoltrata con successo.";
    } else {// ALTRIMENTI...
        echo "Si sono verificati dei problemi nell'invio della mail.";
    }
    //e rimandi dove vuoi  con un link o in automatico
}
//....
?>
scusa avevo fatto due errorri di digitazione sulla validazione dell'email
scritto VELIDATE a posto di VALIDATE e dimenticato di mettere $errore.=
 

Samuele Ronzani

Nuovo Utente
7 Ott 2016
14
0
1
23
D'accordo, grazie mille e fino qua funziona tutto.
Ora ho aggiunto il codice recapcha di google, come faccio a fare in modo che mi controlli se è stato confermato o meno (se copio e incollo il codice html sul form me lo fa passare anche se non è stato confermato).
Ti scrivo il codice di google:
HTML:
<div class="g-recaptcha" data-sitekey="###QUICIDOVREBBEESSEREILCODICEMANONLOMETTO###"></div>
Grazie mille @borgo italia mi sei molto utile
 

Samuele Ronzani

Nuovo Utente
7 Ott 2016
14
0
1
23
D'accordo, ultima domanda.
Nel caso inserissi anche la possibilità di inserire allegati, come faccio con il PHP?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.041
146
63
PR
www.borgo-italia.it