Visualizzazione risultati 1 fino 20 di 20

Discussione: Una domanda sui form mail in php

  1. #1
    L'avatar di gasweb
    gasweb non è connesso Utente giovane
    Data registrazione
    01-11-2003
    Messaggi
    52

    Predefinito Una domanda sui form mail in php

    Salve, in un altro topic (questo) ho trovato il seguente codice a proposito della compilazione del file mailto.php

    Codice PHP:
    <?php
    $oggi
    = date("j F Y G:i");
    $sito = "NOMETUOSITO";
    $ip = "$_SERVER[REMOTE_ADDR]";
    $browser = "$_SERVER[HTTP_USER_AGENT]";
    $to = "TUAMAIL";
    $soggetto = "Contatto dal $sito";
    if(
    trim($_POST['nome']) == "" OR trim($_POST['email']) == "" OR trim($_POST['messaggio']) == "") {
    echo
    "<font color=\"#FF0000\" face=\"comic sans ms\" size=\"2\"><strong>Tutti i campi sono obbligatori</strong></font>";
    }
    else {
    $body = "Modulo inviato il $oggi da $ip - $browser \n\n";
    $body .= "Nome: $_POST[nome] \nEmail: $_POST[email] \nMessaggio: $_POST[messaggio]";
    mail("$to","$soggetto","$body");
    }
    ?>
    Vorrei cortesemente sapere:
    - va pubblicato così com'è nel mio spazio web Altervista (assieme a contatti.php) affinché funzioni?
    - a quale indirizzo mail arrivano i messaggi?
    - perché utilizzando il file contatti.php che ho pubblicato assieme a mailto.php, mi appare il messaggio "Tutti i campi sono obbligatori" mentre ho compilato integralmente il form?

    Grazie e scusate l'ignoranza in materia!

    PS: approfitto per chiedere come fare apparire un messaggio d'errore anche se l'utente non attiva un checkbox (non presente nel codice contatti.php che ho trovato).
    Ultima modifica di gasweb : 08-03-2008 alle ore 17.34.33

  2. #2
    Ospite Guest

    Predefinito

    Citazione Originalmente inviato da gasweb Visualizza messaggio
    - va pubblicato così com'è nel mio spazio web Altervista (assieme a contatti.php) affinché funzioni?
    Si.
    - a quale indirizzo mail arrivano i messaggi?
    A quello che inserisci al posto di TUAMAIL qui (cambia anche NOMETUOSITO ) :
    Codice PHP:
    //resto del codice
    $browser = "$_SERVER[HTTP_USER_AGENT]";
    $to = "TUAMAIL";
    $soggetto = "Contatto dal $sito";
    //resto del codice

    - perché utilizzando il file contatti.php che ho pubblicato assieme a mailto.php, mi appare il messaggio "Tutti i campi sono obbligatori" mentre ho compilato integralmente il form?
    Non so il codice sembra corretto ;-)

    Grazie e scusate l'ignoranza in materia!
    Tutti eravamo così ai principi :-)

  3. #3
    L'avatar di fabrifibra
    fabrifibra non è connesso Utente giovane
    Data registrazione
    05-06-2006
    Messaggi
    51

    Predefinito

    Questa parte di codice controlla le variabili $_POST...
    e in caso una di esse risultasse vuota stampa la scritta "Tutti i campi sono obbligatori"

    Codice PHP:
    (trim($_POST['nome']) == "" OR trim($_POST['email']) == "" OR trim($_POST['messaggio']) == "")
    ...se anche compilando il form completamente ti dice che "tutti i campi sono obbligatori" significa che il form non è impostato correttamente...

    i campi di testo del form che hai in contatti.php nn hanno i nomi (name) giusti, che devono essere rispettivamente, nome, email e messaggio...
    quindi le variabili POST del file mailto.php son prive di informazioni, quindi "vuote".
    Ultima modifica di fabrifibra : 08-03-2008 alle ore 18.24.09

  4. #4
    L'avatar di gasweb
    gasweb non è connesso Utente giovane
    Data registrazione
    01-11-2003
    Messaggi
    52

    Predefinito

    Citazione Originalmente inviato da rvpeople Visualizza messaggio
    A quello che inserisci al posto di TUAMAIL qui (cambia anche NOMETUOSITO ) :
    Codice PHP:
    //resto del codice
    $browser = "$_SERVER[HTTP_USER_AGENT]";
    $to = "TUAMAIL";
    $soggetto = "Contatto dal $sito";
    //resto del codice
    NOMETUOSITO sarebbe gasweb oppure il dominio su cui è hostato su Altervista?


    EDIT:
    Citazione Originalmente inviato da fabrifibra Visualizza messaggio
    Questa parte di codice controlla le variabili $_POST...
    e in caso una di esse risultasse vuota stampa la scritta "Tutti i campi sono obbligatori"

    Codice PHP:
    (trim($_POST['nome']) == "" OR trim($_POST['email']) == "" OR trim($_POST['messaggio']) == "")
    ...se anche compilando il form completamente ti dice che "tutti i campi sono obbligatori" significa che il form non è impostato correttamente...

    i campi di testo del form che hai in contatti.php nn hanno i nomi (name) giusti, che devono essere rispettivamente, nome, email e messaggio...
    quindi le variabili POST del file mailto.php son prive di informazioni, quindi "vuote".
    Giusto!
    Ho rinominato "messaggio" con "indirizzo" in contatti.php senza modificare mailto.php

    Un controllo per il checkbox si può inserire?

    Grazie per le risposte. :)


    RI-EDIT: Allora, diciamo che "funzionicchia"...

    La mail si riesce ad inviare ma sussistono alcuni problemi:
    - il browser visualizza una pagina bianca inviando il form.
    - nella mail non appare il contenuto della textarea, come se avessi lasciato il campo vuoto (ma se così fosse, mi segnalerebbe che tutti i campi sono obbligatori...)
    - non arriva alcuna notifica relativa al controllo checkbox.
    Ultima modifica di funcool : 08-03-2008 alle ore 20.57.47

  5. #5
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Prova a correggere così:
    Codice PHP:
    <?php
    $oggi
    =date("j F Y G:i");
    $sito="GasWeb";
    $ip=$_SERVER['REMOTE_ADDR'];
    $browser=$_SERVER['HTTP_USER_AGENT'];
    $to="TUAMAIL";
    $soggetto="Contatto dal ".$sito;
    if (
    trim($_POST['nome'])=="" OR trim($_POST['email'])=="" OR trim($_POST['messaggio'])=="") {
    echo
    "<font color=\"#FF0000\" face=\"comic sans ms\" size=\"2\"><strong>Tutti i campi sono obbligatori</strong></font>";
    }
    else {
    $body="Modulo inviato il {$oggi} da {$ip} - {$browser}\n\n";
    $body.="Nome: {$_POST['nome']}\nEmail: {$_POST['email']}\nMessaggio: {$_POST['messaggio']}";
    if (
    mail($to,$soggetto,$body))
    echo
    "Il messaggio &egrave; stato spedito correttamente.";
    else
    echo
    "Ci sono stati dei problemi nell'invio del messaggio.";
    }
    ?>
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  6. #6
    L'avatar di gasweb
    gasweb non è connesso Utente giovane
    Data registrazione
    01-11-2003
    Messaggi
    52

    Predefinito

    Risolto il problema della pagina bianca inviando il form.
    Resta il problema che il contenuto della textarea non è trasmesso. :(

    Edit: corretto anche questo, avevo fatto l'upload del file senza salvare le modifiche!
    Manca solo il controllo sulla checkbox ed è perfetto!
    Ultima modifica di gasweb : 08-03-2008 alle ore 21.18.49

  7. #7
    L'avatar di fabrifibra
    fabrifibra non è connesso Utente giovane
    Data registrazione
    05-06-2006
    Messaggi
    51

    Predefinito

    non riesco a capire cosa intendi per controllo "sulla" checkbox, spiegati meglio....facci capire che vuoi fare (:

  8. #8
    L'avatar di gasweb
    gasweb non è connesso Utente giovane
    Data registrazione
    01-11-2003
    Messaggi
    52

    Predefinito

    Nel mio form mail c'è da cliccare una checkbox (quadratino on-off) relativo alla lettura delle condizioni di trattamento dei dati personali.
    Il form mail che ricevo adesso ignora se quella checkbox è stata cliccata o meno, viceversa di quello che succede con i campi input.

    Allora, facciamo il punto sulla situazione e sulle mie esigenze...

    - Ho una tabella di articoli, ciascuno dei quali richiama, in un pop-up, un file tipo contatti.php. Attualmente funzionerebbe tutto (controllo checkbox a parte) perché l'articolo è unico (ed anche il form mail), ma se dovessi aggiungerne altri? Posso cioè avere qualche tag che mi scrive nel form mail da quale link è stato aperto, in modo da sapere perché un utente mi ha contattato?
    Devo indicizzare in qualche modo i vari link verso il form mail, o semplicemente creo tanti contattixx.php, con xx numero crescente?

    - L'alternativa sarebbe forse più complicata: ogni link che attualmente apre in pop-up il file contatti.php, potrebbe condurre l'utente in una pagina del sito dedicata al form mail, solo che in questo caso, trattandosi di una pagina unica per tutti gli articoli, occorre che quello d'interesse venga selezionato da un menù a tendina. In pratica: si clicca sull'articolo A nella pagina vetrina.htm, e si viene diretti alla pagina contatti.php, dove nel form mail il menù a tendina è già settato sull'articolo A. Chiaramente se si entra in contatti.php direttamente, cioè senza scegliere un articolo in vetrina.htm, la selezione dal menù a tendina può essere fatta manualmente.

    Scusate la lungaggine della questione, ma sto impazzenda da 10 giorni per far funzionare a dovere questa faccenda. L'alternativa è agire tramite client di posta, ma credo conosciate bene i difetti di questa modalità...
    Ultima modifica di gasweb : 09-03-2008 alle ore 12.08.06 Motivo: Aggiunta dettagli

  9. #9
    L'avatar di fabrifibra
    fabrifibra non è connesso Utente giovane
    Data registrazione
    05-06-2006
    Messaggi
    51

    Predefinito

    questo dovrebbe essere il codice per fare quello che vuoi te...
    il checkbox invia se spuntato il valore on se lasciato vuoto il valore off

    Codice PHP:
    <?php
    $oggi
    =date("j F Y G:i");
    $sito="GasWeb";
    $ip=$_SERVER['REMOTE_ADDR'];
    $browser=$_SERVER['HTTP_USER_AGENT'];
    $to="TUAMAIL";
    $soggetto="Contatto dal ".$sito;
    if (
    trim($_POST['nome'])=="" OR trim($_POST['email'])=="" OR trim($_POST['messaggio'])=="")
    {
    echo
    "Tutti i campi sono obbligatori.";
    }
    //questo è il controllo checkbox
    elseif($_POST['checkbox'] == "off")
    {
    echo
    "Devi accettare i termini e le condizioni per proseguire.";
    }
    else {
    $body="Modulo inviato il {$oggi} da {$ip} - {$browser}\n\n";
    $body.="Nome: {$_POST['nome']}\nEmail: {$_POST['email']}\nMessaggio: {$_POST['messaggio']}";
    if (
    mail($to,$soggetto,$body))
    echo
    "Il messaggio &egrave; stato spedito correttamente.";
    else
    echo
    "Ci sono stati dei problemi nell'invio del messaggio.";
    }
    ?>
    facci sapere (:

  10. #10
    L'avatar di gasweb
    gasweb non è connesso Utente giovane
    Data registrazione
    01-11-2003
    Messaggi
    52

    Predefinito

    Bene, lo proverò quanto prima... Intanto grazie.

    Per quanto riguarda l'altra faccenda
    Attualmente funzionerebbe tutto (controllo checkbox a parte) perché l'articolo è unico (ed anche il form mail), ma se dovessi aggiungerne altri?
    eccetera...

    se ho ben capito come funziona la faccenda :D , credo si possano creare vari file contattixx.php e mailtoxx.php ("xx" numero progressivo) ad essi collegati, e usare come indicatore della provenienza il campo "$soggetto=" ? Oppure ci sono dei vincoli di Altervista per cui quel campo va lasciato così affinché l'intero codice funzioni?

    Il codice per il checkbox è completamente ignorato... Che lo metta o meno su ON, il messaggio risulta inviato correttamente ed a me non arriva cmq nulla... :(
    Ultima modifica di gasweb : 10-03-2008 alle ore 12.46.09

  11. #11
    L'avatar di fabrifibra
    fabrifibra non è connesso Utente giovane
    Data registrazione
    05-06-2006
    Messaggi
    51

    Predefinito

    hai dato, nel form, al checkbox il nome checkbox?
    Codice PHP:
    name="checkbox"
    come poi richiamato con la variabile post
    Codice PHP:
    $_POST['checkbox']

  12. #12
    L'avatar di gasweb
    gasweb non è connesso Utente giovane
    Data registrazione
    01-11-2003
    Messaggi
    52

    Predefinito

    Ho corretto come dici, ma non funziona ancora... Invia ugualmente il form senza alcuna notifica se la checkbox è su ON o OFF...

  13. #13
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Calma un attimo... se vuoi bloccare il form sotto determinate condizioni PRIMA di invocare il server, non devi usare PHP, ma devi usare JavaScript. Questo il codice con cui devi modificare il tag FORM:
    Codice HTML:
    <form action="..." onsubmit="if(!this.checkbox.checked){alert('Devi accettare l'accordo!');return false;}">
    <!-- gli altri campi del modulo -->
    </form>
    è sempre bene però mantenere il controllo anche via server, in modo che chi disattivasse JavaScript non fregasse il server, visto che il controllo sarebbe ignorato.

    Se non era questo che chiedevi, scusami per il post...

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  14. #14
    L'avatar di gasweb
    gasweb non è connesso Utente giovane
    Data registrazione
    01-11-2003
    Messaggi
    52

    Predefinito

    Quindi come devo procedere? Tolgo quel tag dal file mailto e aggiungo il tuo JavaScript in contatti?

    Alcuni controlli stanno nel php e altri nel Javascript? Una cosetta tipo "questo tag fa questo" si può avere? Almeno per non dovere ogni volta chiedere per ogni form mail.

    Come ho detto in partenza, sono ignorante in materia... Scusate!

  15. #15
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    In definitiva, devi avere due file:
    - uno è il file HTML che contiene il modulo da riempire, con la casellina che richiedi, e della quale la parte del codice più rilevante te l'ho scritta sul post #13
    - un altro è il file PHP che procede alla verifica dei dati e all'invio dell'e-mail, il codice di fabrifibra al post #11 dovrebbe essere corretto.

    La soluzione "con un tag si fa tutto" non è possibile... d'altra parte, i margini di personalizzazione sono talmente ampi che nemmeno sarebbe proponibile una cosa del genere...

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  16. #16
    L'avatar di gasweb
    gasweb non è connesso Utente giovane
    Data registrazione
    01-11-2003
    Messaggi
    52

    Predefinito

    Ora che credevo d'aver capito, va pure peggio!

    Prima mi inviava sempre e comunque il form mail, ignorando la checkbox, ora ecco cosa mi da la pagina web:
    Parse error: syntax error, unexpected T_STRING in /membri/gasweb/mailto001.php on line 8
    Lo 001 nel nome della pagina mailto mi serve per cambiare l'oggetto della mail che ricevo, e sapere perché l'utente mi ha contattato...

    Questo è il contenuto del codice php che sta nel file mailto (eccetto "MIA_EMAIL"...
    Codice PHP:
    <?php
    $oggi
    = date("j F Y G:i");
    $sito = "gasweb";
    $ip = "$_SERVER[REMOTE_ADDR]";
    $browser = "$_SERVER[HTTP_USER_AGENT]";
    $to = "MIA_EMAIL";
    $soggetto = "Contatto per 001 dal $sito";
    if(
    trim($_POST['nome']) == "" OR trim($_POST['email']) == "" OR trim($_POST['indirizzo']) == "" OR trim($_POST['checkbox']) == "") {
    echo
    "<font color=\"#FF0000\" face=\"verdana\" size=\"2\"><strong>Tutti i campi sono obbligatori</strong></font>"; }
    else {
    $body="Modulo inviato il {$oggi} da {$ip} - {$browser}\n\n";
    $body.="Nome: {$_POST['nome']}\nEmail: {$_POST['email']}\nMessaggio: {$_POST['indirizzo']}";
    if (
    mail($to,$soggetto,$body))
    echo
    "Il messaggio &egrave; stato spedito correttamente.";
    else
    echo
    "Ci sono stati dei problemi nell'invio del messaggio.";
    }
    ?>
    Questo è il Javascript nella pagina contatti:
    Codice HTML:
    <script language="javascript" type="text/javascript">
      function Modulo() {
    if ((document.modulo.nome.value == "")) {
       alert("Il campo Nome è obbligatorio");
       document.modulo.nome.focus();
       return false;
    }
    else if ((document.modulo.email.value == "")) {
      alert("Il campo Email è obbligatorio");
      document.modulo.email.focus();
      return false;
    }
    else if ((document.modulo.indirizzo.value == "")) {
       alert("Il campo Indirizzo è obbligatorio");
       document.modulo.indirizzo.focus();
       return false;
    }
    else {
       document.modulo.action = "mailto001.php";
       document.modulo.submit();
    }
      }
    </script>
    Che funziona con tutte le voci tranne che per quella dannata checkbox!

    E questo è il form mail:
    Codice HTML:
    <form method="post" name="modulo" action="mailto001.php"><table border="0" width="580" cellspacing="0" cellpadding="0"><tr><td align="center" valign="middle" width="290">
    Nome e cognome<br><input type="text" name="nome" size="32" maxlength="60" style="background:#ffffff;font-family:verdana,arial,helvetica;color:#000000;font-size:8pt"></td>
    <td align="center" valign="middle" width="290">Email per contatti<br><input type="text" name="email" size="32" style="background:#ffffff;font-family:verdana,arial,helvetica;color:#000000;font-size:8pt"></td></tr></table><br />
    Indirizzo al quale desideri ricevere l'opera<br><textarea name="indirizzo" rows="3" cols="32"style="background:#ffffff;font-family:verdana,arial,helvetica;color:#000000;font-size:8pt"></textarea><br /><br />
    <input type="checkbox" name="checkbox" value="privacy" onsubmit="if(!this.checkbox.checked){alert('Devi accettare l'accordo!');return false;}">Ho preso visione dell'<a href="http://www.garanteprivacy.it/garante/doc.jsp?ID=722132#art_13" target="_blank">informativa sul trattamento dei dati personali</a> e acconsento.<br /><br />
    <input type="button" value="Invia richiesta d'acquisto" onClick="Modulo()"> <input type="reset" value="Cancella tutto">
    <br /><br />
    </form>
    Con un po' di formattazione... e l'ultimo tag che mi avete fornito per controllare la checkbox.

    Non so più che fare...

  17. #17
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Ehm... non era lì che dovevi aggiungere il gestore onsubmit che ti ho indicato sopra, ma nel tag <form>...

    Se ancora non funzionasse, rimuovilo e incorpora il controllo nella funzione Modulo(), aggiungendo queste righe (prima dell'ultimo else):
    Codice:
    else if (!document.modulo.checkbox.checked)
    {
    alert('Devi accettare l'accordo!');
    return false;
    }
    Quanto all'errore PHP, perché controlli $_POST['checkbox'] come fosse una stringa, se invece è un valore booleano?
    Soluzione: rimuovi dalla riga 8 la condizione OR trim($_POST['checkbox']) == "" o, meglio, sostituiscila con isset ($_POST['checkbox'])...

    Stammi bene...
    Ultima modifica di dementialsite : 12-03-2008 alle ore 12.45.53
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  18. #18
    L'avatar di gasweb
    gasweb non è connesso Utente giovane
    Data registrazione
    01-11-2003
    Messaggi
    52

    Predefinito

    Ti ringrazio dei tempestivi chiarimenti, ma sto modificando le impostazioni dei testi nella pagina, per cui il checkbox, almeno per questo form, non mi serve più.
    Quanto all'errore PHP, perché controlli $_POST['checkbox'] come fosse una stringa, se invece è un valore booleano?
    Perché fino a 4 giorni fa non avevo mai utilizzato PHP nei miei siti! Risposta prevedibile, non credi? :D

  19. #19
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Citazione Originalmente inviato da gasweb Visualizza messaggio
    ... Perché fino a 4 giorni fa non avevo mai utilizzato PHP nei miei siti! Risposta prevedibile, non credi? :D
    Era "retorica" la domanda sopra, non è che prevedesse un'esplicita risposta ma era solo un modo di spiegarti perché hai sbagliato... spero non te la sia presa...

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  20. #20
    L'avatar di gasweb
    gasweb non è connesso Utente giovane
    Data registrazione
    01-11-2003
    Messaggi
    52

    Predefinito

    Le domande retoriche non le colgo mai...

    In ogni caso, il sito è finalmente online e vorrei ringraziare chi ha contribuito a questo. ;)

Regole di scrittura

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