[PHP] Validazione e invio campi form.

Discussione in 'PHP' iniziata da Samuele Ronzani, 21 Marzo 2017.

Tag (etichette):
  1. Samuele Ronzani

    Samuele Ronzani Nuovo Utente

    Registrato:
    7 Ottobre 2016
    Messaggi:
    11
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    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.";

    }
    ?>
     
  2. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.988
    Mi Piace Ricevuti:
    145
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    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
     
  3. Samuele Ronzani

    Samuele Ronzani Nuovo Utente

    Registrato:
    7 Ottobre 2016
    Messaggi:
    11
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    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: 22 Marzo 2017
  4. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.988
    Mi Piace Ricevuti:
    145
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    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.=
     
  5. Samuele Ronzani

    Samuele Ronzani Nuovo Utente

    Registrato:
    7 Ottobre 2016
    Messaggi:
    11
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    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
     
  6. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.988
    Mi Piace Ricevuti:
    145
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    ciao
    non uso recapcha (me ne sono fatta una specie personale) quindi di preciso non so dirti
     
  7. Samuele Ronzani

    Samuele Ronzani Nuovo Utente

    Registrato:
    7 Ottobre 2016
    Messaggi:
    11
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    D'accordo, ultima domanda.
    Nel caso inserissi anche la possibilità di inserire allegati, come faccio con il PHP?
     
  8. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    15.988
    Mi Piace Ricevuti:
    145
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
Sto caricando...

Condividi questa Pagina