• User Newbie

    form che non funziona

    Salve,

    sto incontrando problemi per far funzionare un form online creato con Dreamweaver 8, cioè, dopo aver creato una pagina in HML e una in php le ho caricate sul server remoto, ma per ora ho avuto risultati negativi, e quindi chiedo se per favore potete aiutarmi

    le pagine che ho creato sono form-registrazione.htm e send.php , che incollo qui sotto :

    <body>
    <br><br><br><br>

         <table align="center" width="98%"  cellspacing="0" cellpadding="0">
    

    <tr>
    <td align="center" class="titolo9">FORM DI REGISTRAZIONE</td>
    </tr>
    </table>
    <br>
    <hr align="center" width="99%" size="0.1" color="#EAEAEA">
    <br><br>

    <form action="send.php" method="post" enctype="multipart/form-data" target="_blank">

    <p align="center" class="titolo9">Nome</p>

    <div align="center"><input class="titolo9" name="Nome" type="text" size="40" maxlength="50"></div><br><br>

    <p align="center" class="titolo9">Cognome</p>

    <div align="center"><input class="titolo9" name="Cognome" type="text" size="40" maxlength="50"></div><br><br>

    <p align="center" class="titolo9">Denominazione istituzione scolastica</p>

    <div align="center"><input class="titolo9" name="Denominazione istituzione scolastica" type="text" size="40" maxlength="50"></div><br><br>

    <p align="center" class="titolo9">I grado / II grado</p>

    <p align="center" class="titolo9">
    <label>
    <input class="titolo9" type="radio" name="Gruppo pulsanti di scelta1" value="pulsante di scelta">
    I grado</label>
    <br>
    <label>
    <input class="titolo9" type="radio" name="Gruppo pulsanti di scelta1" value="pulsante di scelta">
    II grado</label>
    <br>
    </p><br>

    <p align="center" class="titolo9">Indirizzo email</p>

    <div align="center"><input class="titolo9" name="Indirizzo email" type="text" size="40" maxlength="50"></div><br><br>

    <p align="center" class="titolo9">Contatto telefonico</p>

    <div align="center"><input class="titolo9" name="Contatto telefonico" type="text" size="40" maxlength="50"></div><br><br>

    <hr align="center" width="99%" size="0.1" color="#EAEAEA">
    <br><br>

        <div align="center"><input name="INVIA" type="submit" onClick="send.php" value="INVIA"></div>
    

    </form>

    <br>

    <br>

    </body>


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Send</title>
    </head>

    <body>

    <?php
    if ((trim($_POST['body']) != "")) {
    $to = "[email protected]";
    $body = $_POST['body'];
    $headers = "From: " . $_POST['mail'] . "\n";
    mail($to,$body,$headers);
    echo"Il form è stato inviato correttamente.";
    }
    else {
    echo "Errore, il form non è stato compilato correttamente.";
    }
    ?>
    </body>
    </html>


    Il messaggio che mi arriva è, appunto, "Errore, il form non è stato compilato correttamente."

    Incrociando le dita, vi ringrazio

    Andrea


  • User Attivo

    Non capisco esattamente cosa vuoi andare a pigliare con $_POST['body'] che non compare come valore in nessun punto del form, per questo motivo penso ti dia sempre errore, perché non essendo specificato risulta sempre vuoto.

    Per accorgertene basta aggiungere

    else {
    echo $_POST['body'];
    echo "Errore, il form non è stato compilato correttamente.";
    }

    Se non scrive nulla significa che è vuoto.

    Prova poi quest'altro codice

    else {
    echo $_POST['Nome'];
    echo $_POST['Cognome'];
    echo "Errore, il form non è stato compilato correttamente.";
    }

    per vedere se almeno passa i valori (dovresti vedere nella pagina che spedisce il nome e cognome).

    Fammi sapere se un po' ti ci ritrovi, domani se mi avanza un filo di tempo cerco di sistemarlo tutto 😉


  • User Newbie

    Grazie, ci ho provato e appare infatti il mio nome e cognome ma il risultato non è cambiato e ho pure inserito echo $_POST['']; per gli altri campi del form - no way! Per ora niente e io manco il filo di tempo ho avuto :1:


  • User Attivo

    Si più che altro era per fare un test che non ci fossero altri problemi e vedere se le variabili passavano.

    Di fondo il problema è che $_POST prende il valore del campo che gli specifichi tra le parentesi quadre e body non era specificato da nessuna parte.

    Prova in questo modo, anche se ci saranno almeno altre 3 cose da specificare:

    1. Quali campi vuoi rendere obbligatori da compilare
    2. Bisognerebbe fare un controllo sui valori inseriti (tipo il numero di telefono deve avere almeno un tot di cifre)
      ) Bisogna vedere se l'email arriva e non viene bloccata come spam, il modo migliore sarebbe impostare il From: email/@dominiotuosito/.it o .com , cioè fare si che l'email giunga dal tuo dominio e non da Gmail.

    Comunque nonostante ciò, vediamo come va:

    Cambia il form con

    [HTML]<form action="send.php" method="post" enctype="multipart/form-data" target="_blank">

    <p align="center" class="titolo9">Nome</p>

    <div align="center"><input class="titolo9" name="nome" type="text" size="40" maxlength="50"></div><br><br>

    <p align="center" class="titolo9">Cognome</p>

    <div align="center"><input class="titolo9" name="cognome" type="text" size="40" maxlength="50"></div><br><br>

    <p align="center" class="titolo9">Denominazione istituzione scolastica</p>

    <div align="center"><input class="titolo9" name="istituzione" type="text" size="40" maxlength="50"></div><br><br>

    <p align="center" class="titolo9">I grado / II grado</p>

    <p align="center" class="titolo9"><label><input class="titolo9" type="radio" name="grado" value="primo">I grado</label><br><label><input class="titolo9" type="radio" name="grado" value="secondo">II grado</label><br></p><br>
    <p align="center" class="titolo9">Indirizzo email</p>

    <div align="center"><input class="titolo9" name="email" type="text" size="40" maxlength="50"></div><br><br>

    <p align="center" class="titolo9">Contatto telefonico</p>

    <div align="center"><input class="titolo9" name="telefono" type="text" size="40" maxlength="50"></div><br><br>

    <hr align="center" width="99%" size="0.1" color="#EAEAEA"><br><br>
    <div align="center"><input name="INVIA" type="submit" value="INVIA"></div>

    </form>[/HTML]

    E invece il file send.php con:

    <!DOCTYPE html><html>
    <head>
        <title></title>
    </head>
    <body>
    <?php
    if ((trim($_POST['nome']) != "")) {
    $to = "[email protected]";
    $body = "Ti ha contattato ".$_POST['nome']." ".$_POST['cognome'];
    $body.= "<br><br>";
    $body.= $_POST['istituzione']."<br>".$_POST['email']."<br>".$_POST['telefono'];
    $body.="<br>Grado ".$_POST['grado'];
    $headers = "MIME-Version: 1.0" . "\r\n";
    $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
    $headers .= "From: [email protected] \n";
    $headers .= "Reply-To: ".$_POST['email']." \n";
    
    
    if(mail($to,'Ti hanno contattato',$body,$headers)){
        echo'Email inviata correttamente';
    }    else {
            echo 'Email non inviata';
        }
    echo"Il form è stato inviato correttamente.";
    echo $body;
        
    }
    else {
    echo "Errore, il form non è stato compilato correttamente.";
    }
    ?>
    </body>
    </html>
    

    E fammi sapere, hai un controllo in questo modo sia sul form, che sull'invio dell'email (cioè se l'email è partita poi al massimo andremo a vedere perché non è arrivata).


  • User Newbie

    E' andata .. fumata bianca :1:

    Unica midifica che ho fatto è stata quella di modificare indirizzo email nel FROM , inserendone uno del sito web ed ecco la risposta apparsa su send.php:

    'Email inviata correttamenteIl form è stato inviato correttamente.Ti ha contattato andrea conforti'

    Seguita dai dati inseriti nel form .

    Così funziona .. grande 🙂
    Ti ringrazio, mi hai risolto il problema e ho visto un po' come hai risistemato il send.php - mi riguardo il tutto con calma

    Grazie ancora 🙂