[PHP] Validazione e invio campi form.

Samuele Ronzani

Utente Attivo
7 Ott 2016
42
0
6
Buongiorno,
Ho questo codice PHP che invia i dati che vengono inseriti all'interno di un <form> e li invia alla mai : [email protected]; 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 = "[email protected]";

// 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<[email protected]>";

// 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.042
148
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

Utente Attivo
7 Ott 2016
42
0
6
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 = "[email protected]";

// 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<[email protected]>";

// 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.042
148
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 = "[email protected]";
    $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<[email protected]>";
    // 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

Utente Attivo
7 Ott 2016
42
0
6
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

Utente Attivo
7 Ott 2016
42
0
6
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.042
148
63
PR
www.borgo-italia.it
Discussioni simili
Autore Titolo Forum Risposte Data
K [PHP] Validazione email e password PHP 1
criric Validazione form php ajax Snippet PHP 4
S Form PHP e validazione con ritorno di parametro PHP 0
M Validazione Pagina In Php HTML e CSS 6
G Invio form con PHP PHP 2
T fatture con voci fattura in php PHP 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
M Collegamento tra form html e script php PHP 4
M Problemi con la stampa dei valori in php PHP 1
W [Cerco collaborazioni] Sviluppatore Web (PHP) Offerte e Richieste di Lavoro e/o Collaborazione 1
D passare valori da database sql a php PHP 1
L Ricezione dei dati su file php da modulo html PHP 6
E Inviare variabile a PHP da ciclo in JS Javascript 0
A form PHP prenotazione tramite query PHP 2
A Form php prenotazione di un azienda sanitaria locale presso studio medico PHP 1
F menù select dinamico da db in php PHP 3
L Problemi form Pagina php HTML e CSS 3
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
F Il codice php è giusto? PHP 2
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
A invio massivo dati a file php Javascript 4
Z MySql injection PHP PHP 1
V PHP form intersecate PHP 0
I [Offro][Retribuito] Programmatore Php Offerte e Richieste di Lavoro e/o Collaborazione 0
P Funzione jQuery Ajax invio file a php jQuery 1
C Dopo chiusura del tag php la stringa html va a capo PHP 1
E Transaction php PHP 11
B ciclare file xml con PHP PHP 1
L Estrazione dati php Database 6
A Aiuto per pagina php PHP 0
E Php select option e ajax PHP 23
I Aiuto php Dependent Lookup PHP 0
T arretramento versione PHP... PHP 3
D problema php mysql PHP 1
D problema php mysql PHP 1
E Barra di avanzamento codice PHP PHP 4
G creazione menu a tendina e invio a pagina php PHP 1
A inserire variabile php colore in div html PHP 2
Z Video protetto con PHP PHP 0
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
I Eecuzione di javascript in ciclo foreach php. PHP 7
S Libreria PHP per creare file dwg o dxf PHP 0
A [cerco - retribuito] Sviluppatore Php freelance per progetti vari Offerte e Richieste di Lavoro e/o Collaborazione 2
L Google chart php mysql PHP 2
R Download file multipli da directory php PHP 0
F pagina dinamica PHP PHP 3
P Rimozione automatica url da sitemap.xml con PHP PHP 1
L php tinymce mi duplica la classe label PHP 3
S Errore PHP - Notice: Undefined index ... PHP 14

Discussioni simili