• User

    Come si crea il modulo contatti nel sito?

    Buongiorno, ho appena pubblicato un sito e mi piacerebbe fare una pagina dove possono contattarmi. Non mi piace lasciare l'indirizzo email così com'è e vorrei tanto poter fare il modulo contatti. C'è qualcuno che mi sappia spiegare come si fa, per favore?
    Ringrazio moltissimo tutti quelli che mi daranno una mano.


  • User

    Hai bisogno di un form-mail, alcuni domini ne offrono uno gratuito, tipo Altervista e Digiland, sennò i messaggi del modulo richiedono che l'utente abbia un client di posta installato per poter far partire il messaggio, e questo non ti "nasconde" l'indirizzo mail.
    Se l'hai pubblicato in uno di questi spazi, cerca tra i tool disponibili e trovi come fare per compilarlo secondo le tue esigenze.

    Prima di aprire un sito su Altervista, proprio per avere un form-mail, ho testato alcune form-mail offerte da altri siti ma non mi hanno soddisfatto...


  • User

    Copia questo nel tuo html:

    <div id="mail" style="position:absolute; left:430px; top:360px; margin: 0px; padding: 0px;">
    <form name="form" action="mail.php" method="post">
    <table width="450">
    <tr>
    <td><p class="testo">Nominativo:</p></td>
    <td><p class="testo"><input class="testo" type="text" name="nick" size="48"></input></p></td>

    </tr>
    <tr>
    <td><p class="testo">E-Mail:</p></td>
    <td><p class="testo"><input class="testo" type="text" name="mail" size="48"></input></p></td>
    </tr>
    <tr>
    <td><p class="testo">Oggetto:</p></td>
    <td><p class="testo"><input class="testo" type="text" name="oggetto" size="48"></input></p></td>

    </tr>
    <tr>
    <td><p class="testo">Messaggio:</td>
    <td><textarea class="testo" name="messaggio" cols="37" rows="7"></textarea></td>
    </tr>
    <tr>
    <td align="center" colspan="2">
    <input name="Invia" type="submit" /><input name="Annulla" type="reset" /></td>

    </tr>
    </table>
    </form>
    </div>
    </body>
    </html>Questo nel file php che inserirai nella cartella html:

    <?php

    $receiverMail = "[email protected]";
    $nome = trim(strip_tags(stripslashes($_POST['nick'])));
    $mail = trim(strip_tags(stripslashes($_POST['mail'])));
    $subject = trim(strip_tags($_POST['oggetto']));
    $msg = trim(strip_tags($_POST['messaggio']));

    //$ip = getenv("REMOTE_ADDR");
    $msgformat = "Nome: $nome\n";
    $msgformat.= "Email: $mail\n\n";
    $msgformat.= "Messaggio:\n\t$msg";

    // VALIDATION
    if(empty($nome) || empty($mail) || empty($subject) || empty($msg))
    {
    header("Refresh: 2; URL=.tuosito-contatti.com");
    echo "<h3>Il modulo di richiesta non e' stato inoltratto</h3><p>Perfavore riempi tutti i campi obbligatori</p>";
    echo "<p>Verrete reindirizzati alla pagina di compilazione campi entro 5 secondi</p>";
    }
    elseif(!ereg("^[_a-z0-9-]+(.[_a-z0-9-]+)@[a-z0-9-]+(.[a-z0-9-]+)(.[a-z]{2,3})$", $mail))
    {
    header("Refresh: 2; URL=.tuosito-contatti.com");
    echo "<h3>Il modulo di richiesta non e' stato inoltratto</h3><p>L'indirizzo mail e' invalido</p>";
    echo "<p>Verrete reindirizzati alla pagina di compilazione campi entro 5 secondi</p>";
    }
    else
    {
    mail($receiverMail, $subject, $msgformat, "From: $nome <$email>");
    header("Refresh: 2; URL=.tuosito-contatti.com");
    echo "<h3>Il modulo di richiesta e' stato inoltratto!</h3><p>Verrete ricontattati il prima possibile.</p>";

    Fammi sapere se hai capito..
    Ciao Matt


  • User Attivo

    Allora io consiglio quello di Mattley perchè potrai far inviare all'utente un'e-mail direttamente dal tuo sito senza far aprire client di posta ecc.
    Se ne vuoi uno che comunque apra un client di posta elettronica va benissimo quello di Gas75 (e non 65 :D)


  • User

    Grazie mille a tutti per le dritte.
    Mattleyy non so dove devo inserire il php.
    devo farlo dentro o fuori del body?
    Ah scusa, un'altra cosa...il mio indirizzo email devo inserirlo dove c'è scritto pippo @ tiscali.it o anche da altre parti?
    Grazie mille ancora


  • User Attivo

    shjana il php lo devi inserire in un'altro file che chiami mail.php. Ti spiego come vedi nel form postato da mattleyy c'è questo:
    [HTML]
    <form name="form" action="mail.php" method="post">
    [/HTML]
    Sotto action vedrai che la pagina a cui invii i dati è mail.php. Chiaramente puoi cambiargli il nome come vuoi, quindi in una pagina hai il normale html che usi in tutte le pagine mentre in questa nuova che crei (con estensione .php) ci infili il codice sempre riportato sopra.
    Chiaramente action="mail.php" vuol dire che il file .php si chiama mail ^^
    😄 ciaociao


  • User

    Grazie scwd, aveva ragione la mia amica a consigliarmi di postare qui.
    Siete gentilissimi.


  • User

    Scusa scwd, non funziona così com'è, forse sbaglio qualcosa


  • User Attivo

    Allora dimmi passo dopo passo quello che fai, chiaramente dò per scontato che lo script di mattleyy funzioni 😄 scherzo ^^


  • User

    Grazie per la pazienza scwd, allora ho inserito il div sulla pagina html
    poi ho fatto un file nuovo .php e dentro gli ho inserito le stringhe che mi ha dato mattleyy.
    Ti faccio vedere le stringhe modificate, così capisci se ho sbagliato qualcosa

    <?php

    $receiverMail = "[email protected]";
    $nome = trim(strip_tags(stripslashes($_POST['nick'])));
    $mail = trim(strip_tags(stripslashes($_POST['mail'])));
    $subject = trim(strip_tags($_POST['oggetto']));
    $msg = trim(strip_tags($_POST['messaggio']));

    //$ip = getenv("REMOTE_ADDR");
    $msgformat = "Nome: $nome\n";
    $msgformat.= "Email: $mail\n\n";
    $msgformat.= "Messaggio:\n\t$msg";

    // VALIDATION
    if(empty($nome) || empty($mail) || empty($subject) || empty($msg))
    {
    header("Refresh: 2; URL=.misteri-patricia-cornwell .com");
    echo "<h3>Il modulo di richiesta non e' stato inoltratto</h3><p>Perfavore riempi tutti i campi obbligatori</p>";
    echo "<p>Verrete reindirizzati alla pagina di compilazione campi entro 5 secondi</p>";
    }
    elseif(!ereg("^[_a-z0-9-]+(.[_a-z0-9-]+)@[a-z0-9-]+(.[a-z0-9-]+)(.[a-z]{2,3})$", $mail))
    {
    header("Refresh: 2; URL=.misteri-patricia-cornwell .com");
    echo "<h3>Il modulo di richiesta non e' stato inoltratto</h3><p>L'indirizzo mail e' invalido</p>";
    echo "<p>Verrete reindirizzati alla pagina di compilazione campi entro 5 secondi</p>";
    }
    else
    {
    mail($receiverMail, $subject, $msgformat, "From: $nome <$email>");
    header("Refresh: 2; URL=.misteri-patricia-cornwell .com");
    echo "<h3>Il modulo di richiesta e' stato inoltratto!</h3><p>Verrete ricontattati il prima possibile.</p>";

    </body>
    </html>


  • User Attivo

    Guarda il codice così sembra esatto, però hai chiuso il php?
    Cioè il codice php va iniziato <?PHP e finito ?> e siccome nel codice non lo vedo scritto forse non cel'hai messo, ma ti dovrebbe dare errore... dimmi un pò..^^


  • User

    Ma devo proprio scrivere <?php e finito>?


  • User Attivo

    Eheh non proprio 😄 allora piccolo accenno: in html quando scrivi una pagina il primo e l'ultimo tag saranno <HTML> e </HTML>. In php è obbligatorio
    [php]
    <?PHP
    //funzioni ecc ecc
    ?>
    [/php]
    Ora ti riposto il codice con il tag finale e riprovalo 😉
    [php]
    <html>
    <body>
    <?php
    $receiverMail = "[email protected]";
    $nome = trim(strip_tags(stripslashes($_POST['nick'])));
    $mail = trim(strip_tags(stripslashes($_POST['mail'])));
    $subject = trim(strip_tags($_POST['oggetto']));
    $msg = trim(strip_tags($_POST['messaggio']));
    //$ip = getenv("REMOTE_ADDR");
    $msgformat = "Nome: $nome\n";
    $msgformat.= "Email: $mail\n\n";
    $msgformat.= "Messaggio:\n\t$msg";
    // VALIDATION
    if(empty($nome) || empty($mail) || empty($subject) || empty($msg))
    {
    header("Refresh: 2; URL=.misteri-patricia-cornwell .com");
    echo "<h3>Il modulo di richiesta non e' stato inoltratto</h3><p>Perfavore riempi tutti i campi obbligatori</p>";
    echo "<p>Verrete reindirizzati alla pagina di compilazione campi entro 5 secondi</p>";
    }
    elseif(!ereg("^[_a-z0-9-]+(.[_a-z0-9-]+)@[a-z0-9-]+(.[a-z0-9-]+)(.[a-z]{2,3})$", $mail))
    {
    header("Refresh: 2; URL=.misteri-patricia-cornwell .com");
    echo "<h3>Il modulo di richiesta non e' stato inoltratto</h3><p>L'indirizzo mail e' invalido</p>";
    echo "<p>Verrete reindirizzati alla pagina di compilazione campi entro 5 secondi</p>";
    }
    else
    {
    mail($receiverMail, $subject, $msgformat, "From: $nome <$email>");
    header("Refresh: 2; URL=.misteri-patricia-cornwell .com");
    echo "<h3>Il modulo di richiesta e' stato inoltratto!</h3><p>Verrete ricontattati il prima possibile.</p>";
    ?>
    </body>
    </html>
    [/php]
    Fammi sapere ^^ e provvederemo 😄


  • User

    Ho fatto copia/incolla del codice tuo, ma quando provo a lanciare un'email mi esce questo errore:

    Parse error: parse error in d:\hosting\misteri-patricia-cornwell.com\wwwroot\mail.php on line 41

    Poi ho rifatto il modulo da sola, perchè facendo copia/incolla di quello di mattleyy, usciva spostato sulla destra.

    Grazie mille per il tempo che ti sto rubando.
    :arrabbiato:


  • User Attivo

    shjana copiami tutta la pagina compresi i tag html di mail.php perchè l'errore è nella linea 41, ma del codice che ti ho ripostato sono 33 linee 😄 non ti preoccupare è un forum apposta 😄


  • User Attivo

    Fermi tutti
    ehehe l'ho rivisto e provato 😄
    ora funziona e te lo ri-ri-riposto ora dovrebbe andarti bene mancava una parentesi anche al ciclo else finale copia questo:
    [PHP]
    <html>
    <body>
    <?php
    $receiverMail = "[email protected]";
    $nome = trim(strip_tags(stripslashes($_POST['nick'])));
    $mail = trim(strip_tags(stripslashes($_POST['mail'])));
    $subject = trim(strip_tags($_POST['oggetto']));
    $msg = trim(strip_tags($_POST['messaggio']));
    //$ip = getenv("REMOTE_ADDR");
    $msgformat = "Nome: $nome\n";
    $msgformat.= "Email: $mail\n\n";
    $msgformat.= "Messaggio:\n\t$msg";
    // VALIDATION
    if(empty($nome) || empty($mail) || empty($subject) || empty($msg))
    {
    header("Refresh: 2; URL=.misteri-patricia-cornwell .com");
    echo "<h3>Il modulo di richiesta non e' stato inoltratto</h3><p>Perfavore riempi tutti i campi obbligatori</p>";
    echo "<p>Verrete reindirizzati alla pagina di compilazione campi entro 5 secondi</p>";
    }
    elseif(!ereg("^[_a-z0-9-]+(.[_a-z0-9-]+)@[a-z0-9-]+(.[a-z0-9-]+)(.[a-z]{2,3})$", $mail))
    {
    header("Refresh: 2; URL=.misteri-patricia-cornwell .com");
    echo "<h3>Il modulo di richiesta non e' stato inoltratto</h3><p>L'indirizzo mail e' invalido</p>";
    echo "<p>Verrete reindirizzati alla pagina di compilazione campi entro 5 secondi</p>";
    }
    else
    {
    mail($receiverMail, $subject, $msgformat, "From: $nome <$email>");
    header("Refresh: 2; URL=.misteri-patricia-cornwell .com");
    echo "<h3>Il modulo di richiesta e' stato inoltratto!</h3><p>Verrete ricontattati il prima possibile.</p>";
    }
    ?>
    </body>
    </html>
    [/PHP]
    ora deve andare e se non va cambiamo 😄


  • User

    Non ti avevo copiato tutta la pagina, scusa.
    Adesso te la ridò tutta, comunque l'errore esce sempre.

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http_//www-w3-org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Documento senza titolo</title>
    </head>
    <body>
    <html>
    <body>
    <?php
    $receiverMail = "[email protected]";
    $nome = trim(strip_tags(stripslashes($_POST['nick'])));
    $mail = trim(strip_tags(stripslashes($_POST['mail'])));
    $subject = trim(strip_tags($_POST['oggetto']));
    $msg = trim(strip_tags($_POST['messaggio']));
    //$ip = getenv("REMOTE_ADDR");
    $msgformat = "Nome: $nome\n";
    $msgformat.= "Email: $mail\n\n";
    $msgformat.= "Messaggio:\n\t$msg";
    // VALIDATION
    if(empty($nome) || empty($mail) || empty($subject) || empty($msg))
    {
    header("Refresh: 2; URL=.www_misteri-patricia-cornwell .com");
    echo "<h3>Il modulo di richiesta non e' stato inoltratto</h3><p>Perfavore riempi tutti i campi obbligatori</p>";
    echo "<p>Verrete reindirizzati alla pagina di compilazione campi entro 5 secondi</p>";
    }
    elseif(!ereg("^[_a-z0-9-]+(.[_a-z0-9-]+)@[a-z0-9-]+(.[a-z0-9-]+)(.[a-z]{2,3})$", $mail))
    {
    header("Refresh: 2; URL=.www_misteri-patricia-cornwell .com");
    echo "<h3>Il modulo di richiesta non e' stato inoltratto</h3><p>L'indirizzo mail e' invalido</p>";
    echo "<p>Verrete reindirizzati alla pagina di compilazione campi entro 5 secondi</p>";
    }
    else
    {
    mail($receiverMail, $subject, $msgformat, "From: $nome <$email>");
    header("Refresh: 2; URL=.www_misteri-patricia-cornwell .com");
    echo "<h3>Il modulo di richiesta e' stato inoltratto!</h3><p>Verrete ricontattati il prima possibile.</p>";
    ?>
    </body>
    </html>


  • User Attivo

    shjana sostituisci il codice vecchio con quello che ti ho ripostato manca la fine del ciclo while proprio nel finire del codice 😉 io l'ho provato (inserendo direttamente i valori per fare prima :D) e funziona l'e-mail mi è arrivata e tutto 😉 Facci sapere se a te va 🙂


  • User

    L'ho fatto ma non funziona, può essere un problema del server?


  • User Attivo

    allora sono andato sul tuo sito e nella pagina Contatti.html te hai cambiato i nomi dei campi modulo:
    [HTML]
    <form name="form1" method="post" action="mail2.php">
    <p align="center">Nominativo:
    <input type="text" name="textfield">
    </p>
    <p align="center">
    E-

          mail:
            <input type="text" name="textfield">
        </p>
        <p align="center">
    

    Oggetto:
    <input type="text" name="textfield">
    </p>
    <p align="center">Messaggio:
    <textarea name="textarea"></textarea>
    </p>
    <p align="center">
    <input type="submit" name="Submit" value="Invia">
    <input name="Reset" type="reset" id="Reset" value="Ripristina">
    </p>
    </form>
    [/HTML]
    Al posto di quel form metti questo che è uguale e cambiano i nomi:
    [HTML]
    <form name="form1" method="post" action="mail2.php">
    <p align="center">Nominativo:
    <input type="text" name="nick">
    </p>
    <p align="center">
    E-

          mail:
            <input type="text" name="mail">
        </p>
        <p align="center">
    

    Oggetto:
    <input type="text" name="oggetto">
    </p>
    <p align="center">Messaggio:
    <textarea name="messaggio"></textarea>
    </p>
    <p align="center">
    <input type="submit" name="Submit" value="Invia">
    <input name="Reset" type="reset" id="Reset" value="Ripristina">
    </p>
    </form>
    [/HTML]
    Però non sono sicuro che risolvi...comunque sistemalo e poi al massimo facciamo una prova veloce se è il tuo server che rompe ma non penso 😉