Visualizzazione risultati 1 fino 5 di 5

Discussione: Campi vuoti in un form che mi invio con script PHP

  1. #1
    Guest

    Thumbs down Campi vuoti in un form che mi invio con script PHP

    Ciao a tutti,

    Premesso che è la prima volta che scrivo in questo forum, vorrei segnalare un problema che avviene con uno script php che dovrebbe inviarmi un'email con tutti i campi compilati di un modulo/form che ho messo di prova sul mio sito, modulo che invece risulta sempre vuoto.
    Sto studiando il PHP, ma non vedo errori nel codice, ne in come passo le variabili al form che ho scritto in XHTML e validato dal W3C:
    Non vorrei fosse un problema del server Apache di Altervista, perché anche un altro modulo scritto sempre in XHTML e impaginato con una tabella ovvero con i tag <table> <tr> <td> ecc. smette di funzionare e mi arriva sempre la solita email dal server web Apache <apache@ns89.altervista.org> che dice quanto segue:
    just filled in your comments form. They said:


    Their e-mail address was:


    ------------

    To report abuses or spam please follow this link: ecc.

    Come si vede i campi risultano vuoti? Come mai? Se lo stesso modulo lo impagino senza una tabella tutto funziona benissimo!!!!.
    Non capisco davvero.

    In ogni caso questo è il mio form:
    Codice HTML:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it">
    <head>
    
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
    <title>modulo che viene inviato ad un file php</title>
     <link rel="shortcut icon" href="favicon.ico"/> 
     <link rel="stylesheet" href="video.css" type="text/css" media="screen" /> 
    </head>
    <body>
    <div align="center">
    <form action="definitivo_elabora_form.php" name="modulo" id="modulo" method="post"  enctype="text/plain">
    <table class="tabella_modulo">
    <thead>
    <tr>
    <th colspan="2">Modulo per comunicazioni</th>
    </tr>
    </thead>
    <tbody>
    <tr>
    <td>Nome utente:</td><td><input type="text" name="nome" id="nome" size="30" maxlength="40" /></td>
    </tr>
    
    <tr>
    <td>Indirizzo email:</td><td><input type="text" name="email" id="email"  size="30" maxlength="40" /></td>
    </tr>
    <tr>
    <td>Motivo del contatto:</td>
    <td><select name="motivo" id="motivo">
            <option value="commerciale">Informazioni commerciali</option>
    	<option value="preventivo">Richiesta preventivo</option>
    	<option value="appuntamento">Prenotazione appuntamento</option>
    </select>
    </td>
    	</tr>
    <tr>
    		<td>Note:</td><td><textarea name="testo" id="testo" cols="60" rows="7"></textarea></td>
    	</tr>
    <tr>
     	<td colspan="2"><input type="submit" value="Invia" />&nbsp;<input type="reset" value="Cancella" /></td>
    </tr>
    </tbody>
    </table>
    </form>
    </div>
    </body>
    </html>
    questo invece lo script che non visualizza però i vari campi del modulo ovvero l server Apache mi invia correttamente l'email, con i campi vuoti:
    Codice PHP:
    <?php
    $messaggio
    ="Questa email ti è stata inviata dal tuo sito. L'utente " . $_POST['nome'] . "a cui puoi rispondere a:" . $_POST['email'] . "ti ha contattato per motivi di" . $_POST['motivo']. "\nTi ha scritto:" . $_POST['testo'];
    mail("mio_nickname@gmail.com", "Invio email da:" . $_POST['nome'], $messaggio);
    ?>
    Ciao e scusate la lunghezza del post, ma ci tenevo ad essere chiaro.
    Grazie.
    Ultima modifica di neoutentilinux : 21-08-2010 alle ore 13.09.56

  2. #2
    Guest

    Predefinito

    ciao eccomi con un poco di ritardo :)

    ti passo il file .php che sto utilizzando anche io :P
    ovviamente se non imposti il tutto il form non scrive ;)

    Codice PHP:
    <?php
    //Valori presi dal form

    $oggetto="Commento";
    $mittente=$_REQUEST['email'];

    // dati anagrifici

    $nome=$_REQUEST['nome'];
    $Cognome=$_REQUEST['cognome'];
    $soc=$_REQUEST['soc'];
    $via=$_REQUEST['via'];
    $citta=$_REQUEST['citta'];
    $stato=$_REQUEST['stato'];
    $telefono=$_REQUEST['telefono'];
    $fax=$_REQUEST['fax'];
    $email=$_REQUEST['email'];
    $oggetto=$REQUEST['oggetto'];
    $messaggio=$REQUEST['messaggio'];



    // Rielabora e crea un testo formattato

    $testo= "


    Nome: "
    . $nome . "
    Cognome: "
    . $Cognome . "
    Società: "
    . $soc . "
    Via / P. zza: "
    . $via . "
    Città: "
    . $citta . "
    Provincia / Stato: "
    . $stato . "
    Telefono: "
    . $telefono . "
    Fax: "
    . $fax . "
    Email: "
    . $email . "
    Oggetto: "
    . $oggetto . "
    Messaggio: "
    . $messaggio ;








    //e-mail del destinatario. (inserire la vostra mail, chiaramente)
    $destinatario="info@tuamail.it";

    //script invio mail
    mail($destinatario,$oggetto,$testo,$mittente);
    header("location: http://tuosito.it/grazie.html");
    ?>
    ora perdonami ma non ho la testa ora per riadattare il codice al tuo form :(
    cmq io uso questo :) modificalo e adattalo e vedrai che funziona ;)
    Ultima modifica di musicanapoli : 22-08-2010 alle ore 15.35.02 Motivo: Modicato tag per racchiudere il codice

  3. #3
    Guest

    Predefinito

    Ciao,

    Ti ringrazio, appena ho un attimo di tempo lo adatto e ti dico come è andata.
    Grazie ancora e ciao.


    EDIT
    Ciao,

    Allora alla fine sono riuscito a modificare il mio script .php e farlo funzionare.

    Ho modificato in particolare nell'header la parola From : $email\n Infatti alla fine ricevevo l'email con i campi compilati, ma se non inserivo il From e poi la variabile $email, la email che il mio client Evolution mi consegnava proveniva dal web server Apache di Altervista.org e NON, come io volevo, dall'utente che compilava il mio form sul mio sito (ovviamente ero sempre io che facevo delle prove, per testare il tutto)

    Va beh; allego qui il codice in XHTML del mio form ( è molto semplice perché è una prova, ma penso possa aiutare anche altri utenti con problemi simili):
    Codice HTML:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="it" lang="it">
    <head>
    
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
    <title>secondo_form</title>
     <link rel="shortcut icon" href="favicon.ico"/> 
     <link rel="stylesheet" href="video.css" type="text/css" media="screen" /> 
    </head>
    <body>
    <form action="mail.php" method="post" name="modulo" id="modulo">
    <table class="tabella_modulo">
    <tr>
    <td>Il tuo nome:</td><td><input type="text" name="name"  id="name" /></td>
    </tr>
    <tr>
    <td>Il tuo cognome:</td><td><input type="text" name="cognome" id="cognome" /></td>
    </tr>
    <tr>
    <td>La tua e-mail:</td><td><input type="text" name="email" id="email" /></td>
    </tr>
    <tr><td>Lascia un commento:</td><td><textarea name="comments" id="comments"></textarea></td></tr>
    <tr><td><input type="submit" value="Submit" /></td><td><input type="reset" value="Cancel" /></td></tr>
    </table>
    </form>
    </body>
    </html>
    Quasi dimenticavo al suo interno c'è un richiamo ad un .CSS (foglio di stile) che ovviamente si può tranquillamente eliminare.

    Qui di seguito allego lo script .php ora perfettamente funzionante, che ho modificato:

    Codice PHP:
    <?php
    function checkOK($field)
    {
    if (
    eregi("\r",$field) || eregi("\n",$field)){
    die(
    "Invalid Input!");
    }
    }

    $name = $_POST['name'];
    checkOK($name);
    $cognome = $_POST['cognome'];
    checkOK($cognome);
    $email = $_POST['email'];
    checkOK($email);
    $comments = $_POST['comments'];
    checkOK($comments);
    $utente = $name . " " . $cognome;
    $to = "mio_nickname@gmail.com";
    $message = "$utente ha lasciato un commento sul modulo del tuo sito. Dice quanto segue:\n$comments\n\nIl suo indirizzo di posta elettronica è: $email";
    if (
    mail($to,"Commenti dal tuo sito web",$message,"From: $email\n")) {
    echo
    "Grazie per i tuoi commenti.";
    } else {
    echo
    "Si &egrave; verificato un problema nello spedire i tuoi commenti. Per favore, controlla di aver compilato correttamente tutti i campi del modulo, grazie!.";
    }
    ?>
    Spero possa aiutare anche altri.
    Ciao a tutti e grazie.
    Ultima modifica di musicanapoli : 02-09-2010 alle ore 04.27.02

  4. #4
    Guest

    Predefinito

    ti ringrazio tantissimo per questo codice, funziona perfettamente.

    Solo una cosa, dovrebbe essere possibile ma non riesco...

    Come modifico il copdice in modo che oltre al messaggio che appare al momento dell'invio (il tuo grazie per i commenti, per intenderci) mi redirecti in automatico all'home page? perchè così resta fisso su questa pagina bianca con questa scritta, è sta malino!

    EDIT
    risolto. semplicemente aggiungendo alla fine della pagina php:

    Codice HTML:
    <script language="javascript">
    <!--
    function redirect() {
    location.replace("http://www.xxxxxxxx.it");
    }
    setTimeout("redirect()",5000);
    -->
    </script>
    Ultima modifica di musicanapoli : 02-09-2010 alle ore 04.29.03

  5. #5
    Guest

    Predefinito

    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.

    Provando ad utilizzare lo script dei due post precedenti sapete dirmi se riesco a risolvere il problema??

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •