PHP bottone per invio mail o ritorno al form

Discussione in 'PHP' iniziata da uffre, 3 Novembre 2019.

  1. uffre

    uffre Nuovo Utente

    Registrato:
    3 Novembre 2019
    Messaggi:
    8
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Buonasera a tutti,
    premesso che non ci capisco nulla di php ... e non solo ...

    sono riuscito con vari scopiazzamenti qua e la nel web a creare un form che mi invia una mail dopo che il form html è compilato.
    Ora nel file php vorrei mettere due button :
    uno che mi riporta alla pagina precedente del form per eventuali modifiche prima dell'invio (e questo ci sono riuscito e funzione)
    un altro button per inviare una volta che il form è compilato correttamente (e questo non ci riesco ho provato a mettere un button che richiama una function , ma evidentemente non si fa cosi)
    .
    Come potrei fare?

    Grazie
    PHP:
    echo "<input type=\"button\" onclick=\"history.back(1)\" value=\"Torna indietro\"/><br><br><br><br>";

    echo 
    "<input type=\"button\" onclick=\"invio()\" value=\"Invio\"/><br><br><br><br>";

    function 
    invio(){
    mail($receivers$subject$body$headers);
    echo 
    "La mail e' stata inviata con successo. Grazie per averci contattato";
    Marco
     
    Ultima modifica di un moderatore: 3 Novembre 2019
  2. Max 1

    Max 1 Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    29 Febbraio 2012
    Messaggi:
    3.908
    Mi Piace Ricevuti:
    290
    Punteggio:
    83
    Sesso:
    Maschio
    @uffre
    Da regolamento del forum, come tutti noi sei tenuto ad usare il tag [​IMG] o il tag [​IMG] per il PHP, quando posti del codice, oppure la funzione codice dalla barra degli strumenti
    [​IMG]

    Inoltre ti prego di leggere attentamente il regolamento generale del forum e quello di sezione dove posti prima di continuare
    Grazie
    Per questa volta te lo sistemo io ma mi raccomando per il futuro
     
  3. uffre

    uffre Nuovo Utente

    Registrato:
    3 Novembre 2019
    Messaggi:
    8
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Grazie :-(( scusate per il futuro cercherò di essere piu attento.
     
  4. zorro

    zorro Utente Attivo

    Registrato:
    20 Ottobre 2014
    Messaggi:
    218
    Mi Piace Ricevuti:
    10
    Punteggio:
    18
    Sesso:
    Maschio
    Località:
    ROMA
    Ciao Uffre,
    la procedura è forse un po' + lunga, ma ti conviene scrivere tre moduli separati, ognuno con una propria funzione.
    Di seguito i moduli molto schematizzati (uno disegna il form, uno lo processa e l'ultimo invia la mail)

    form.html

    HTML:
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title></title>
    </head>
    
    <body>
    <form action="contr.php" method="get">
    Cognome:
    <input type="text" name="cognome"><br><br>
    Nome:
    <input type="text" name="nome"><br><br>
    E_mail:
    <input type="text" name="mail"><br><br><br><br>
    <input type="submit" name="submit" value="invia">
    </form>
    </body>
    </html>
    
    contr.php
    PHP:
    <?php
    //recupero le variabili passate
    $cognome $_GET['cognome'];
    $nome $_GET['nome'];
    $mail $_GET['mail'];

    //esegue i controlli necessari

    echo '<input type="button" onClick="location.href=\'form.html\'" value="torna al form">&emsp;';
    echo 
    '<input type="button" onClick="location.href=\'invia.php\'" value="invia la mail">';
    ?>
    ed infine invia.php
    PHP:
    <?php
    //invia laa mail

    echo 'OK. La mail è stata correttamente inviata';
    ?>
    Come vedi sono molto stilizzati ma..... funzionano. Puoi anche vedere qui il funzionamento
    Spero di esserti stato utile.


    Zorro
     
    Ultima modifica: 4 Novembre 2019
  5. uffre

    uffre Nuovo Utente

    Registrato:
    3 Novembre 2019
    Messaggi:
    8
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Ciao Zorro,
    grazie per la risposta;
    ho provato a fare come mi hai detto te ma mi si presenta un problema:
    Il file CONTR.php lavora bene legge le variabili del form, e i bottoni funzionano come nel tuo link del test.
    Il file INVIA.php dove ho inserito gli stessi dati del contr.php (come variabili) praticamente non mi legge i dati del form e di conseguenza non mi invia neanche la mail :-((.
    Dove sbaglio?

    p.s. io ho come metodo POST e non Get ma non credo possa dipendere da quello

    Grazie

    Marco
     
  6. Felotti

    Felotti Nuovo Utente

    Registrato:
    7 Ottobre 2019
    Messaggi:
    14
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Nel file contr.php hai creato un form per passare le variabili interessate a invia.php?
    Semplicemente in questo modo
    Codice:
    <form action="invia.php" method="post">
        <input type="hidden" name="cognome" value="<?php echo $_POST['cognome']; ?>" />
        <input type="hidden" name="nome" value="<?php echo $_POST['nome']; ?>" />
        <input type="hidden" name="mail" value="<?php echo $_POST['mail']; ?>" />
    </form>
    Così facendo le variabili ricevute da form.html ed elaborate in contr.php potranno essere gestite anche dal codice per l'invio della mail
     
  7. uffre

    uffre Nuovo Utente

    Registrato:
    3 Novembre 2019
    Messaggi:
    8
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Ciao Felotti,
    grazie per la spiegazione ma ho provato ad inserire alla fine del file contr.php l'istruzione che mi hai dato
    ma non capisco poi come richiamare le variabili in invia.php:
    ho provato a fare cosi ma non mi da nulla

    PHP:
    echo "I dati inseriti sono .. <br> Nome: "$_POST["nome"] . "<br>Cognome: " $_POST["cognome"] . "<br>Data arrivo: 
    ma non mi visualizza i nomi e cognomi

    Scusami ma sono molto scarso in materia.

    Marco
     
  8. zorro

    zorro Utente Attivo

    Registrato:
    20 Ottobre 2014
    Messaggi:
    218
    Mi Piace Ricevuti:
    10
    Punteggio:
    18
    Sesso:
    Maschio
    Località:
    ROMA
    C'è anche un modo + semplice: mi sono dimenticato di dirtelo: usare le sessioni. Dopo aver recuperato le variabili dal form, le dovrai salvare in altrettante variabili di sessione, che poi richiamerai all'inizio di invia.php. Dovrai quindi creare un altro modulo dove setterai le variabili ad un valore nullo:

    PHP:
    $_SESSION['cognome'] = '';
    quindi, una volta valorizzata la variabile tramite il form (ad esempio cognome = Rossi) assegnerai il valore alla variabile di sessione

    PHP:
    $_SESSION['cognome'] = $cognome';
    ed infine farai esattamente il contrario

    PHP:
    $cognome  $_SESSION['cognome'];
    all'inizio di invia.php; questo perché, passando da un modulo all'altro le variabili si perdono; usando le sessioni, invece, le puoi recuperare.
    NB. Prima di qualsiasi operazione con le sessioni le devi aprire con la funzione

    PHP:
    session_start();
    (è + facile a farsi che a dirsi)



    Zorro
     
    Ultima modifica: 4 Novembre 2019
  9. uffre

    uffre Nuovo Utente

    Registrato:
    3 Novembre 2019
    Messaggi:
    8
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Ciao Zorro,
    quindi con il metodo che mi ha detto Felotti è giusto che non mi funzioni? perchè ho provato ma non ci sono riuscito.

    Marco
     
  10. zorro

    zorro Utente Attivo

    Registrato:
    20 Ottobre 2014
    Messaggi:
    218
    Mi Piace Ricevuti:
    10
    Punteggio:
    18
    Sesso:
    Maschio
    Località:
    ROMA
    In realtà non ho mai capito bene il funzionamento dei campi hidden, ma con le sessioni è sicuro che risolvi
    Ricordati solo di inserire session_start() prima di fare qsualsiasi operazione con le sessioni. Fammi sapere come va


    Zorroò
     
  11. Felotti

    Felotti Nuovo Utente

    Registrato:
    7 Ottobre 2019
    Messaggi:
    14
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Con le sessioni funziona correttamente
    La differenza è che le sessioni mantengono la variabile senza richiamarla ad ogni file ma solo quando ti serve.
    I campi "hidden" ti servono per passare le variabili di pagina in pagina senza che queste vengano utilizzate in alcuna istruzione.
    Se non vuoi usare le sessioni perchè ti appaiono complicate puoi fare una cosa di questo tipo:

    form.html
    HTML:
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title></title>
    </head>
    
    <body>
    <form action="contr.php" method="get">
    Cognome:
    <input type="text" name="cognome"><br><br>
    Nome:
    <input type="text" name="nome"><br><br>
    E_mail:
    <input type="text" name="mail"><br><br><br><br>
    <input type="submit" name="submit" value="invia">
    </form>
    </body>
    </html>
    contr.php
    PHP:
    <html>
    <body>
    <?php
    //recupero le variabili passate
    $cognome $_GET['cognome'];
    $nome $_GET['nome'];
    $mail $_GET['mail'];
    echo 
    '<input type="button" onClick="location.href=\'form.html\'" value="torna al form">&emsp;';
    echo 
    '<input type="button" onClick="location.href=\'invia.php\'" value="invia la mail">';
    ?>
    <form action="invia.php" method="GET">
    <input type="hidden" name="cognome" value="<?php echo $cognome?>" />
    <input type="hidden" name="nome" value="<?php echo $nome?>" />
    <input type="hidden" name="mail" value="<?php echo $mail?>" />
    </form>
    </body>
    </html>
    invia.php
    PHP:
    <?php
    //Recupero le variabili passate con hidden
    $cognome $_GET['cognome'];
    $nome $_GET['nome'];
    $mail $_GET['mail'];

    //codice per inviare la mail

    echo 'OK. La mail è stata correttamente inviata';
    ?>
    Se vuoi testare il passaggio delle variabili a invia.php, al posto di inviare la mail, fai una echo e vedrai che funziona correttamente.
    Per esempio:
    PHP:
    <?php
    $cognome 
    $_GET['cognome'];
    $nome $_GET['nome'];
    $mail $_GET['mail'];
    echo 
    'Ciao'.$cognome.' '.$nome.', la tua mail è: '.$mail.' !';
    ?>
     
  12. zorro

    zorro Utente Attivo

    Registrato:
    20 Ottobre 2014
    Messaggi:
    218
    Mi Piace Ricevuti:
    10
    Punteggio:
    18
    Sesso:
    Maschio
    Località:
    ROMA
    Perché complicarsi la vita.....
     
  13. Felotti

    Felotti Nuovo Utente

    Registrato:
    7 Ottobre 2019
    Messaggi:
    14
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    E' semplicemente un'altra soluzione
    Io mi son sempre trovato bene, valuterà Uffre quale soluzione applicare
    Sempre meglio avere delle alternative in più che delle risposte in meno ;)
     
  14. uffre

    uffre Nuovo Utente

    Registrato:
    3 Novembre 2019
    Messaggi:
    8
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Grazie a tutti , ora appeno ho 5 minuti liberi provo le varie alternative e vi faccio sapere.

    Saluti
     
  15. Felotti

    Felotti Nuovo Utente

    Registrato:
    7 Ottobre 2019
    Messaggi:
    14
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Mi son reso conto ora di non averti inviato il codice aggiornato :mad:
    Ad ogni modo, ti allego i codici dei file che ti serviranno

    form.php
    HTML:
    <html>
    <head>
    <meta charset="utf-8">
    <title></title>
    </head>
    
    <body>
    <form action="contr.php" method="POST">
    Cognome:
    <input type="text" name="cognome"><br><br>
    Nome:
    <input type="text" name="nome"><br><br>
    E_mail:
    <input type="text" name="mail"><br><br><br><br>
    <input type="submit" name="submit" value="invia">
    </form>
    </body>
    </html>
    contr.php
    PHP:
    <html>
    <body>
    <?php
    //recupero le variabili passate
    $cognome $_POST['cognome'];
    $nome $_POST['nome'];
    $mail $_POST['mail'];
    ?>

    <form action="invia.php" method="POST">
    Torna al form! <input type="radio" name="button" value="Form"><br>
    Invia mail!<input type="radio" name="button" value="Mail">

    <input type="hidden" name="cognome" value="<?php echo $cognome?>" />
    <input type="hidden" name="nome" value="<?php echo $nome?>" />
    <input type="hidden" name="mail" value="<?php echo $mail?>" />

    <input type="submit" value="Scegli">
    </form>
    </body>
    </html>
    checksel.php
    PHP:
    <html>
    <body>
    <?php
    //recupero le variabili passate
    $cognome $_POST['cognome'];
    $nome $_POST['nome'];
    $mail $_POST['mail'];
    ?>

    <form action="invia.php" method="POST">
    Torna al form! <input type="radio" name="button" value="Form"><br>
    Invia mail!<input type="radio" name="button" value="Mail">

    <input type="hidden" name="cognome" value="<?php echo $cognome?>" />
    <input type="hidden" name="nome" value="<?php echo $nome?>" />
    <input type="hidden" name="mail" value="<?php echo $mail?>" />

    <input type="submit" value="Scegli">
    </form>
    </body>
    </html>
    invia.php
    PHP:
    <?php
    $cognome 
    $_POST['cognome'];
    $nome $_POST['nome'];
    $mail $_POST['mail'];
    include(
    'checksel.php');

    // CODICE PER INVIARE LA MAIL

    //PER VERIFICARE PASSAGGIO VARIABILI INVECE:

    echo 'Ciao '.$cognome.' '.$nome.', la tua mail è: '.$mail.' !';
    ?>
    Come vedrai, al posto dei button per la scelta di tornare al form o inviare la mail, ho messo due radio
    Inoltre ho aggiunto un file per il controllo della scelta fatta ed, in caso si scelga di inviare la mail, il file viene incluso in invia.php che eseguirà le varie operazioni
     
  16. uffre

    uffre Nuovo Utente

    Registrato:
    3 Novembre 2019
    Messaggi:
    8
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Buonasera a tutti,
    ho provato tutte e due le soluzioni e funzionano tutte e due egregiamente.
    Grazie
     
Sto caricando...

Condividi questa Pagina