Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    25

    Problema form mail php invio automatico mail con campi vuoti

    Salve a tutti, ho un problema con un form mail in php che ho trovato in rete che in maniera random invia una mail all'indirizzo impostato come destinatario con tutti i campi vuoti, nonostante abbiamo impostato la compilazione dei campi obbligatoria in dreamviewer con uno sprayvalidationtextfield.js.

    il codice per l'invio del form è:

    <body>
    <div align="center">
    <p>
    <?php
    function checkOK($field)
    {
    if (eregi("\r",$field) || eregi("\n",$field)){
    die("Invalid Input!");
    }
    }


    $ragione_sociale = $_POST['ragione_sociale'];
    checkOK($ragione_sociale);
    $indirizzo = $_POST['indirizzo'];
    checkOK($indirizzo);
    $comune = $_POST['comune'];
    checkOK($comune);
    $provincia = $_POST['provincia'];
    checkOK($provincia);
    $cap = $_POST['cap'];
    checkOK($cap);
    $telefono = $_POST['telefono'];
    checkOK($telefono);
    $cellulare = $_POST['cellulare'];
    checkOK($cellulare);
    $email = $_POST['email'];
    checkOK($email);
    $commento = $_POST['commento'];
    checkOK($commento);
    $utente = $ragione_sociale;
    $to = "rigenerazione@tecnograph.net";
    $message = "$utente ha richiesto un preventivo. I suoi dati sono:\n\n Indirizzo: $indirizzo\n\n Comune: $comune\n\n Provincia: $provincia\n\n Cap: $cap\n\n Telefono: $telefono\n\n Cellulare: $cellulare\n\n Email: $email\n\n Messaggio opzionale: $commento\n\n ";
    if (mail($to,"Richiesta Preventivo",$message,"From: $email\n")) {
    echo "";
    } else {
    echo "Si &egrave; verificato un problema nello spedire la richiesta di assistenza. Per favore, controlla di aver compilato correttamente tutti i campi del modulo, grazie!.";
    }
    ?>


    </p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>Grazie per averci contattato!</p>
    <p>La tua richiesta verrà gestita nel più breve tempo possibile</p>
    <p><a href="devivospa_assistenza.html">ritorna</a></p>
    </div>
    </body>

    Non so come risolvere il problema, perché se voglio inviare dal sito il form compilato parte senza problemi, invece se non compilo i campi da errore ed indica i campi obbligatori da compilare e nonn parte la mail. Ho contattato l'assistenza aruba e mi hanno detto che è un problema che può succedere con alcuni script automatici.
    Nel caso in cui nessuno mi riuscisse a dare una mano per modificare questo script potreste indicarmene uno che non ha questo tipo di problema, in modo da poterlo sostituire??? Grazie anticipatamente

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    25
    Nessuno vuole darmi un consiglio, una dritta o un suggerimento????

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2014
    residenza
    Venezia
    Messaggi
    66
    ...non capisco...forse mi sfugge qualcosa...
    invia una mail all'indirizzo impostato come destinatario con tutti i campi vuoti, nonostante abbiamo impostato la compilazione dei campi obbligatoria in dreamviewer
    quindi i campi devono essere compilati obbligatoriamente
    poi scrivi
    se voglio inviare dal sito il form compilato parte senza problemi, invece se non compilo i campi da errore ed indica i campi obbligatori da compilare e nonn parte la mail

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    25
    Quote Originariamente inviata da bedo1 Visualizza il messaggio
    ...non capisco...forse mi sfugge qualcosa...

    quindi i campi devono essere compilati obbligatoriamente
    poi scrivi


    Grazie Bedo1 per esserti interessato al problema, mi spiego meglio:

    Ho impostato con dreamviewer che i campi del form siano tutti obbligatori, quindi se voglio inviare su sito il modulo senza i compilare i campi, mi esce l'errore a fianco ad ogni campo che è obbligatorio compilarlo e non lo fa inviare; se invece compilo correttamente tutti i campi invia correttamente il modulo via mail ed esce la pagina con la scritta"Modulo inviato correttamente. Grazie!". Quindi sembra tutto corretto e funzionante, ma ho notato che al destinatario arrivano in maniera random (nel mese di dicembre scorso in un mese sono arrivate 10 mail dal sito con campi vuoti ognuna delle quali ad orari diversi) le email da questo modulo con i campi tutti in bianco, che è impossibile perchè come spiegato prima se non li compilo volontariamente il modulo non lo invia. I tecnici di aruba dove c'è il sito mi hanno risposto dicendomi:

    "
    Gentile cliente,
    la informo che tale anomale potrebbe essere sollevata se il form per l'invio di mail viene utilizzato da spammer mediante script automatici che si interfacciano sulla pagina invio_preventivo_srl.php per l'invio di mail.
    Per evitare tale anomalie la invito ad inserire la richiesta del codice captcha automatico che impedirà l'invio da script automatici ma permetterà l'utilizzo corretto della pagina all'utente che visualizza il sito."

    Siccome no c'è spazio per inserire codice captcha automatico, chiedevo se era possibile sistemare il codice php per l'invio del form oppure se avete voi un altro script per l'invio di un form mail senza che presenti il problema dell'invio di mail con campi vuoti.


  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2014
    residenza
    Venezia
    Messaggi
    66
    ...la tua pagina php che controlla il form e invia la mail può essere richiamata direttamente ...
    ...se incolli il suo url sul browser e dai invio da tastiera vedrai che ti arriva una mail vuota...
    ...devi inserire un controllo all'inizio del codice php che verifichi l'esistenza, ad esempio, di $_POST...
    ...se $_POST non esiste (e quindi è una falsa sottomissione della pagina) fai un echo di un messaggio di errore...

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    25
    Quote Originariamente inviata da bedo1 Visualizza il messaggio
    ...la tua pagina php che controlla il form e invia la mail può essere richiamata direttamente ...
    ...se incolli il suo url sul browser e dai invio da tastiera vedrai che ti arriva una mail vuota...
    ...devi inserire un controllo all'inizio del codice php che verifichi l'esistenza, ad esempio, di $_POST...
    ...se $_POST non esiste (e quindi è una falsa sottomissione della pagina) fai un echo di un messaggio di errore...
    Scusa bedo1, ma sono stato impegnato e non ho potuto fare nessuna prova. Ho provato ad effettuare questa aggiunta nel codice:

    if (empty($ragione_sociale))
    {
    echo "Spiacenti, campo vuoto!<br />";
    $error = true;
    }
    if (empty($comune))
    {
    echo "Spiacenti, campo vuoto!<br />";
    $error = true;
    }
    if (empty($provincia))
    {
    echo "Spiacenti, campo vuoto!<br />";
    $error = true;
    }
    if (empty($cap))
    {
    echo "Spiacenti, campo vuoto!<br />";
    $error = true;
    }

    if (empty($telefono))
    {
    echo "Spiacenti, Telefono vuoto!<br />";
    $error = true;
    }
    if (empty($cellulare))
    {
    echo "Spiacenti, campo vuoto!<br />";
    $error = true;
    }
    if (empty($email))
    {
    echo "Spiacenti, campo vuoto!<br />";
    $error = true;
    }
    if (empty($commento))
    {
    echo "Spiacenti, campo vuoto!<br />";
    $error = true;
    }

    if (mail($to,"Richiesta Preventivo",$message,"From: $email\n")) {
    echo "E-mail inviata!!<br />";
    } else {
    echo "Si &egrave; verificato un problema nello spedire la richiesta di assistenza. Per favore, controlla di aver compilato correttamente tutti i campi del modulo, grazie!.";
    }
    ?>

    Ma continua sempre ad arrivare saltuariamente la mail con i campi vuoti. Tu dici di mettere all'inizio del codice

    if (empty($_POST))
    {
    echo "Spiacenti, campo vuoto!<br />";
    $error = true;
    }
    in questo modo?? Scusami ma non sono troppo esperto di php

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    25
    Quote Originariamente inviata da F@bius Visualizza il messaggio
    Manca un controllo sulla variabile $error che ti blocca lo script in caso di campi non compilati.
    Grazie F@bius, solo che mi potresti dire in php come bloccare lo script?

    In rete ho trovato questo altro codice per controllare se viene premuto il tasto di invio del form:

    if ((IsSet($_POST['submit_mail'])) && ($_POST['submit_mail'] == "Invia")) {

    if (($_POST['nome'] != "") && ($_POST['email'] != "") && ($_POST['messaggio'] != 0)) {

    // ===============
    // Codice di invio della mail
    // ===============

    } // controllo nome, email, messaggio - esito positivo

    else {

    echo "Tutti i campi sono obbligatori!";

    } // controllo nome, email, messaggio - esito negativo

    } // submit_mail


    dove al posto di 'submit_mail' bisogna sostituire l'attributo 'name' impostato nel form.

    Secondo voi può andare integrandolo nel codice che sto utilizzando??


  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    25
    Per effettuare il controllo sulla variabile $error va bene scritto così:

    <?php
    if(isset($_POST['submit'])){
    //ricevo i vari $_POST
    //CONTROLLO tutti i valori ricevuti
    if($error=="SI"){
    //non invio email e rimando alla pag. form.php
    }else{
    //invio l'email e riinvio dove voglio
    }
    }
    ?>

    ????

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    25
    Quote Originariamente inviata da F@bius Visualizza il messaggio
    Nella forma più semplice. Se lo script è contenuto in un layout il suo arresto provocherà un caricamento parziale del layout stesso.

    Codice PHP:
    if ($error) {
    die(
    "Attenzione: non hai compilato i campi obbligatori");


    Per evitare questo problema bisogna rielaborare l'errore in modo tale da lasciar caricare il flusso della pagina.

    Quindi in definitiva il codice che dovrei utilizzare è:

    <body>
    <div align="center">
    <p>
    <?php
    function checkOK($field)
    {
    if (eregi("\r",$field) || eregi("\n",$field)){
    die("Invalid Input!");
    }
    }

    $ragione_sociale = $_POST['ragione_sociale'];
    checkOK($ragione_sociale);
    $indirizzo = $_POST['indirizzo'];
    checkOK($indirizzo);
    $comune = $_POST['comune'];
    checkOK($comune);
    $provincia = $_POST['provincia'];
    checkOK($provincia);
    $cap = $_POST['cap'];
    checkOK($cap);
    $telefono = $_POST['telefono'];
    checkOK($telefono);
    $cellulare = $_POST['cellulare'];
    checkOK($cellulare);
    $email = $_POST['email'];
    checkOK($email);
    $commento = $_POST['commento'];
    checkOK($commento);

    if (empty($ragione_sociale))
    {
    echo "Spiacenti, campo vuoto!<br />";
    $error = true;
    }
    if (empty($comune))
    {
    echo "Spiacenti, campo vuoto!<br />";
    $error = true;
    }
    if (empty($provincia))
    {
    echo "Spiacenti, campo vuoto!<br />";
    $error = true;
    }
    if (empty($cap))
    {
    echo "Spiacenti, campo vuoto!<br />";
    $error = true;
    }

    if (empty($telefono))
    {
    echo "Spiacenti, Telefono vuoto!<br />";
    $error = true;
    }
    if (empty($cellulare))
    {
    echo "Spiacenti, campo vuoto!<br />";
    $error = true;
    }
    if (empty($email))
    {
    echo "Spiacenti, campo vuoto!<br />";
    $error = true;
    }
    if (empty($commento))
    {
    echo "Spiacenti, campo vuoto!<br />";
    $error = true;
    }

    if ($error) {
    die(
    "Attenzione: non hai compilato i campi obbligatori");
    }

    $utente = $ragione_sociale;
    $to = "rigenerazione@tecnograph.net";
    $message = "$utente ha richiesto un preventivo. I suoi dati sono:\n\n Indirizzo: $indirizzo\n\n Comune: $comune\n\n Provincia: $provincia\n\n Cap: $cap\n\n Telefono: $telefono\n\n Cellulare: $cellulare\n\n Email: $email\n\n Messaggio opzionale: $commento\n\n ";
    if (mail($to,"Richiesta Preventivo",$message,"From: $email\n")) {
    echo "";
    } else {
    echo "Si &egrave; verificato un problema nello spedire la richiesta di assistenza. Per favore, controlla di aver compilato correttamente tutti i campi del modulo, grazie!.";
    }
    ?>


    </p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>Grazie per averci contattato!</p>
    <p>La tua richiesta verrà gestita nel più breve tempo possibile</p>
    <p><a href="devivospa_assistenza.html">ritorna</a></p>
    </div>
    </body>

    E' corretto o devo correggere altro?

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    25
    Volevo ringraziare bedo1 e F@bius per l'aiuto che mi avete dato. Ho aspettato qualche giorno prima di farveli per verificare che fosse tutto corretto. Per chi avesse lo stesso mio problema il codice corretto e' quello che trovate qualche post sopra.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.