PHP bottone per invio mail o ritorno al form

uffre

Nuovo Utente
3 Nov 2019
8
0
1
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:

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.449
338
83
@uffre
Da regolamento del forum, come tutti noi sei tenuto ad usare il tag
code-gif.6007
o il tag
php-png.6009
per il PHP, quando posti del codice, oppure la funzione codice dalla barra degli strumenti
box-inserisci-2-png-jpg.6008


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
 

zorro

Utente Attivo
20 Ott 2014
322
21
28
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:

uffre

Nuovo Utente
3 Nov 2019
8
0
1
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
 

Felotti

Nuovo Utente
7 Ott 2019
14
0
1
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
 

uffre

Nuovo Utente
3 Nov 2019
8
0
1
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
 

zorro

Utente Attivo
20 Ott 2014
322
21
28
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:

uffre

Nuovo Utente
3 Nov 2019
8
0
1
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
 

zorro

Utente Attivo
20 Ott 2014
322
21
28
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ò
 

Felotti

Nuovo Utente
7 Ott 2019
14
0
1
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.' !';
?>
 

Felotti

Nuovo Utente
7 Ott 2019
14
0
1
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 ;)
 

uffre

Nuovo Utente
3 Nov 2019
8
0
1
Grazie a tutti , ora appeno ho 5 minuti liberi provo le varie alternative e vi faccio sapere.

Saluti
 

Felotti

Nuovo Utente
7 Ott 2019
14
0
1
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
 

uffre

Nuovo Utente
3 Nov 2019
8
0
1
Buonasera a tutti,
ho provato tutte e due le soluzioni e funzionano tutte e due egregiamente.
Grazie
 
Discussioni simili
Autore Titolo Forum Risposte Data
C Come posso integrare il bottone "paga adesso" di paypal e un form php per invio dati? PHP 1
M [PHP] Consiglio su come istanziare un Bottone PHP 0
G [PHP] Creare mail con allegato nascosto e bottone di richiamo PHP 0
bubino8 [WordPress] [PHP] Login diretto da bottone WordPress 4
G Codice bottone JS+PHP [era:Aiuto!!!!] HTML e CSS 2
G invio form tramite bottone paypal in php PHP 0
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 1
I dominio aruba versione php server linux Domini 3
G Colorare menu select attraverso ricerca php PHP 0
L PHP motore di ricerca nel sito PHP 1
S PHP e Mysqli PHP 0
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
M Visulizzare immagine con php PHP 8
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7

Discussioni simili