[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.046
150
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.046
150
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.046
150
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
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 1
I dominio aruba versione php server linux Domini 3
G Colorare menu select attraverso ricerca php PHP 0
L PHP motore di ricerca nel sito PHP 1
S PHP e Mysqli PHP 0
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
M Visulizzare immagine con php PHP 8
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
G leggere file txt e stampare con php il contenuto a video PHP 7
F Ricreare struttura php+mysql su Xampp Apache 0

Discussioni simili