Visualizzazione risultati 1 fino 13 di 13

Discussione: Aiuto form php

  1. #1
    clubmad non è connesso Neofita
    Data registrazione
    06-03-2013
    Messaggi
    7

    Predefinito Aiuto form php

    Salve, ho creato un form per un sito che sto facendo per un amica, ho anche creato un file php con il quale vorrei far arrivare i dati inseriti nel form alla mia mail, il problema è che una volta compilato tutto mi reindirizza su una pagina bianca e non mi arriva la mail con i dati, ho provato a cercare sul forum ma non ho trovato nulla che mi potesse aiutare...anche perchè non sono pratica e quindi non riesco ancora a capire cosa modificare

    Questo è l'HTML:
    Codice HTML:
      <form id="form1" name="form1" method="post" action="mail.php">
           <table width="343" height="341" border="0">
          <tr>
            <td width="123"><label>Nome</label></td>
            <td width="195"><input type="text" name="Nome" id="Nome" /></td>
          </tr>
          <tr>
            <td><label>Cognome
                
            </label></td>
            <td><input type="text" name="Cognome" id="Cognome" /></td>
          </tr>
          <tr>
            <td><label>e-mail
                
            </label></td>
            <td><input type="text" name="E-mail" id="E-mail" /></td>
          </tr>
          <tr>
            <td>tipo di festa,età del festeggiato, recapito telefonico</td>
            <td><label>
              <textarea name="tipo festa" rows="6" id="tipo festa"></textarea>
            </label></td>
          </tr>
          <tr>
            <td>data da prenotare</td>
            <td onclick="MM_validateForm('data da prenotare','','R');return document.MM_returnValue"><label>
              <input type="text" name="data da prenotare" id="data da prenotare" />
            </label>
            </td>
          </tr>
          <tr>
            <td>Accetto le condizioni</td>
            <td><label>
              <input type="checkbox" name="Privacy" id="Privacy" />
              <textarea name="privacy" rows="5" id="privacy" onclick="MM_validateForm('privacy','','R');return document.MM_returnValue">Io sottoscritto/a dichiaro di avere ricevuto le informazioni
    di cui all’art. 13 del D.lgs. 196/2003 in particolare riguardo ai diritti da me riconosciuti dalla legge
    ex art. 7 D.lgs. 196/2003, acconsento al trattamento dei miei dati con le modalità e per le finalità
    indicate nella informativa stessa, comunque strettamente connesse e strumentali alla gestione del
    rapporto contrattuale.</textarea>
            </label></td>
          </tr>
          <tr>
            <td>&nbsp;</td>
            <td><input name="invia richiesta" type="submit" id="invia richiesta" onclick="MM_validateForm('Nome','','R');MM_validateForm('Cognome','','R');MM_validateForm('E-mail','','RisEmail');MM_validateForm('data','','RisNum');MM_validateForm('tipo festa','','R');return document.MM_returnValue" value="Invia richiesta" /></td>
          </tr>
           </table>
    Questo è il php (mail.php)
    Codice PHP:
    <?php

    function isValidEmail($email){
    return
    eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email);
    }

    if (isset(
    $_POST['Invia'])) {
    $nome=$_POST['nome'];
    $cognome=$_POST['cognome'];
    $email=$_POST['email'];
    $messaggio=$_POST['messaggio'];
    $data=$_POST['data da prenotare'];
    $privacy=$_POST['privacy'];
    if (!empty(
    $nome)) {
    if (!empty(
    $email)) {
    if (
    isValidEmail($email)) {
    if (!empty(
    $messaggio)) {
    if (!empty(
    $data)) {
    if (
    $privacy==1) {

    $redirect="http://clubmad.altervista.org/buon%20fine.html"; $testo_del_messaggio="Nome: $nome\n";

    $testo_del_messaggio="Cognome: $cognome\n"; $testo_del_messaggio.="Email: $email\n";
    $testo_del_messaggio.="Messaggio:$messaggio\n";

    $testo_del_messaggio="Data da prenotare: $data\n";
    $testo_del_messaggio.="Privacy: $privacy\n";
    $esito=mail("adriana2mka@yahoo.it","Messaggio di $nome ($email)", $testo_del_messaggio);
    if (
    $esito) {
    echo
    "Esito: Messaggio inviato, ripsonderemo appena possibile!";
    } else {
    echo
    "Errore: Non &egrave; stato possibile inviare il messaggio!";
    }
    } else {
    echo
    "Errore: Il Codice di verifica non &egrave; corretto!";
    }
    } else {
    echo
    "Errore: Bisogna dare il consenso sulla Privacy!";
    }
    } else {
    echo
    "Errore: Manca il Messaggio!";
    }
    } else {
    echo
    "Errore: Formato Email non corretto!";
    }
    } else {
    echo
    "Errore: Manca un indirizzo Email!";
    }
    } else {
    echo
    "Errore: Manca il Nome!";
    }
    }
    ?>
    Grazie
    Ultima modifica di alemoppo : 08-03-2013 alle ore 00.07.39 Motivo: +tag [html] e [php]

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,760

    Predefinito

    Nell'html, vedo che c'é una invocazione della MM_validateForm(). L'hai dichiarata?

    Nel PHP, come prima cosa controlli
    Codice PHP:
    isset($_POST['Invia'])
    . Ma io un input con name "invia" non lo vedo nell'html


    Ciao!

  3. #3
    clubmad non è connesso Neofita
    Data registrazione
    06-03-2013
    Messaggi
    7

    Predefinito

    Scusa ma non ho capito...purtroppo non riesco a capire il funzionamento del php anche cercando in internet non riesco a trovare nulla, il form l'ho creato con Dreamweaver, dopodichè ho assegnato dei comportamenti a ciascun campo, da qui il MM_Validate form ch mi chiedevi, dove dovrei dichiararlo? e poi per il $_POST[invia] dovrebbe essere il comando del tasto che invia la richiesta (è una delle poche cose che ho modificato io )
    Scusa le mille domande ma purtroppo mi sono bloccata su questa cosa....Grazie mille

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,760

    Predefinito

    "MM_validateForm()" perché l'hai messa? Cosa dovrebbe fare? Da dove l'hai presa? Teoricamente quella funzione è inutile, perché il form viene validato lato PHP.

    Invece, $_POST['abc123'] rappresenta il campo del form di nome "abc123". Quindi, invece di name="invia richiesta", dovresti mettere name="Invia" (perché hai $_POST['Invia']); invece di name="Nome" va name="nome" (perché hai $_POST['nome']) etc etc per tutti gli altri campi.

    Ciao!

  5. #5
    clubmad non è connesso Neofita
    Data registrazione
    06-03-2013
    Messaggi
    7

    Predefinito

    Quella funzione (MM_Validate form) l'ha messa dreamweavr quando ho aggiunto il comportamento al campo (cioè quando ho indicato che è obbligatorio riempire quel campo) non avevo ancora "capito" che il form veniva controllato dal php...comunque sei stato molto chiaro seguirò le tue indicazioni e ti farò sapere. Grazie dell'aiuto

    EDIT:

    niente da fare...ho modificato tutti i campi come mi hai indicato tu ma la mail non mi arriva e quando clicco su "invia richiesta" mi reindirizza sulla pagina mail.php...sonoad un vicolo cieco!
    Ultima modifica di alemoppo : 09-03-2013 alle ore 13.42.42 Motivo: non fare post consecutivi: usa il tasto "Edita" per modificare i messaggi.

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,760

    Predefinito

    Il fatto che reindirizza alla "mail.php" lo deve fare. Poi da lì puoi reindirizzare in altre pagine in caso di successo, o comunque puoi gestirlo come vuoi.

    Puoi linkare il form se stai lavorando online? Oppure riscrivi qui il form corretto (e anche la parte PHP se l'hai modificata).

    Ciao!

  7. #7
    clubmad non è connesso Neofita
    Data registrazione
    06-03-2013
    Messaggi
    7

    Predefinito

    ecco il link http://clubmad.altervista.org/prenota%20online.html ora non so quale "versione" c'è poichè ho provato e riprovato...può essere che ci sia anche la stessa versione indicata sopra

    EDIT:
    hai ragione, in effetti non avevo scaricato i nuovi file...comunque adesso mi da l'errore "il codice di verifica non è corretto"...continuo a sbagliare qualcosa, credo di aver corretto tutto come mi indicavi tu, ho controllato minuscole e maiuscole ed ho controllato che i campi fossero uguali sia nel PHP che nell' HTML...
    so che sto rompendo...ma non posso finire senza questo form
    Ultima modifica di clubmad : 09-03-2013 alle ore 23.11.03

  8. #8
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,760

    Predefinito

    Questo:
    Codice HTML:
    <input name="invia richiesta" type="submit" id="invia richiesta" [...]
    Devi sostituire il name con "Invia", perché sarebbe $_POST['Invia'].

    EDIT:

    Ma vedo che anche gli altri campi son errati! Ad esempio, Nome e Cognome nel PHP sono minuscoli, mentre nel form sono maiuscoli. Inoltre nell'HTML hai E-mail, mentre nel PHP c'é $_POST['email']. Inoltre altri campi non coincidono proprio, come il messaggio e le altre cose.

    Ciao!
    Ultima modifica di alemoppo : 09-03-2013 alle ore 22.28.59

  9. #9
    clubmad non è connesso Neofita
    Data registrazione
    06-03-2013
    Messaggi
    7

    Predefinito

    cercando nel forum ho trovato un altro codice, adesso la mail mi arriva, ma alcuni campi( data, nome e cognome) non compaiono proprio...potresti aiutarmi? il codice è questo:
    Codice PHP:
    <?php
    if(!isset($_POST['submit']))

    $to = 'adriana2mka@yahoo.it'; //THE Email ADDRESS YOU WANT THE FORM DATA TO BE SENT TO

    $subject = "Prenotazione"; //THE SUBJECT FIELD OF THE Email

    $email = $_POST['messaggio']; //THE FORMAT OF WHICH THE DATA WILL BE SENT TO THE Email

    $mailheaders = "From: " . $_POST['nome'] . " " . $_POST['cognome '] . " <> "; //THE FROM FIELD OF THE Email

    $redirect = 'http://clubmad.altervista.org/buon20%fine.html';
    if(
    mail($to, $subject, $email, $mailheaders))
    echo
    'Email inviata correttamente';
    else echo
    'Errore durante invio email!'
    ?>
    Ultima modifica di alemoppo : 11-03-2013 alle ore 20.15.56 Motivo: +tag [php]

  10. #10
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,760

    Predefinito

    Non ha molto senso "cercare codici", "incollarli" e "sperare" che il tutto funzioni correttamente. Ogni script ha i suoi nomi, le sue azioni da fare...

    Il succo è controllare che i vari "name" degli input corrispondano alle chiavi dell'array $_POST.

    Detto questo, quindi, come è il form? Come sono impostati i campi? Sono uguali a "submit", "messaggio", "nome", "cognome"?

    Ciao!

  11. #11
    clubmad non è connesso Neofita
    Data registrazione
    06-03-2013
    Messaggi
    7

    Predefinito

    lo so..infatti non "spero", siccome non ne capisco molto faccio varie prove cambiando i campi in base a quelli che ho io...solo che non sapendo dove inserirli non è che posso modificare moltissimo, ho trovato tanti codici diversi per questo motivo non riesco a capire quali devo usare....il submit l'ho aggiunto io poichè prima non inviava nulla...per gli altri campi sono quelli che ho io ne dovrei aggiungere un altro (data da prenotare) ma mi è più facile eliminarlo del tutto...detto questo posso in qualche modo far "apparire" i dati nome e cognome all'interno del messaggio?Grazie per la disponibilità

  12. #12
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,760

    Predefinito

    Un if funziona così: se la condizione interna è vera, esegue il codice dopo di sé. Il punto esclamativo è un NOT, quindi nega la condizione detta prima.

    isset($_POST['submit']) è vero se $_POST['submit'] esiste. Se non esiste, è falso.
    Nel tuo caso, non c'é alcun input con name="submit", quindi quella condizione è falsa. Con il punto esclamativo davanti diventa vera. Quindi verrà eseguita la linea:
    Codice PHP:
    $to = 'adriana2mka@yahoo.it'; //THE Email ADDRESS YOU WANT THE FORM DATA TO BE SENT TO
    (che in effetti dovrebbe esser eseguita).

    mail(), invece, la funzione che invia l'email.
    Il primo parametro è l'indirizzo a cui inviare l'email. Nel tuo caso hai la variabile $to, che è settata con la tua email. (quindi ti arriva una email).
    Il secondo parametro è l'oggetto della email. Nel tuo caso c'é la variabile $subject che contiene "Prenotazione". Il terzo parametro invece è il testo della email, ed è qui che devi inserire il nome e cognome. Invece hai impostato soltanto la variabile $email che contiene il messaggio. Se vuoi aggiungere i nomi e cognomi, devi aggiungere $_POST['nome'] e $_POST['cognome ']. Una cosa del tipo:
    Codice PHP:
    $email = 'Scritto da: '.$_POST['nome'].' '. $_POST['cognome'].PHP_EOL.'Messaggio: '.$_POST['messaggio'];
    PHP_EOL è il ritorno a capo.

    L'ultimo campo, è il settaggio dei parametri dell'header. Serve per impostare il mittente, se l'email è in formato HTML, ....

    p.s: ovviamente potremmo anche darti il codice già fatto e funzionante (ci avrei anche impiegato meno tempo), ma non è questo lo scopo di questo forum. Quello che (almeno a me) interessa è cercare di insegnare qualcosa, e trasmettere anche il divertimento di scrivere codici. All'inizio ovviamente è brutto, noioso (soprattutto se devi fare qualcosa). Comunque ti consiglio di seguire un tutorial PHP per imparare bene i comandi (prima però devi conoscere HTML e CSS, se non li conosci).

    Ciao!

  13. #13
    clubmad non è connesso Neofita
    Data registrazione
    06-03-2013
    Messaggi
    7

    Predefinito

    Grazie, so che ti ho reso le cose un pò difficili :-P comunque il mio scopo è quello di imparare per questo ho chiesto sul forum perchè leggendo le guide non riesco a "concentrarmi" bene e lascio perdere...adesso funziona alla perfezione... Grazie mille!

Regole di scrittura

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