PDA

View Full Version : [PHP - html] Form e invio pdf


$te
09-12-2012, 22:04
Salve,
dopo un weekend di ricerche, siete la mia ultima speranza.

Ho un form nel mio sito, creato con wordpress (form creato con contact form 7).
Il form invia una email al "cliente", ma vorrei anche inviare una email con allegato un file pdf con le informazioni del form.

Riesco ad inviarmi una email con un file pdf tramite questo codice:

$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',12);
$pdf->Cell(40,10,'Ciao Mondo!');
$doc = $pdf->Output('', 'S');
// invio dell'email
$mail = new PHPMailer();

$mail->From = 'mittente@sito.it';

$mail->FromName = 'evobuoni';
$mail->Subject = 'Allegato in PDF';
$mail->Body = 'Apri il file in allegato';
$mail->AddAddress('miaemail@gmail.com');
// defiojainizione dell'allegato
$mail->AddStringAttachment($doc, 'doc.pdf', 'base64', 'application/pdf');
// spedizione
$mail->Send();


Tuttavia, non so come usare i dati del form e soprattutto, avviarlo (inviare l'email) solo al momento del "submit".

Forse se cé addirittura un plugin di wordpress, ma non l'ho trovato.

Grazie!!

AllerITA
10-12-2012, 04:53
Ciao, scusami se dico una cosa scontata, ma il form deve essere referenziato
ad una pagina in questo caso php dove tu attraverso il metodo che hai scelto per il passaggio dei dati
invii tutte le informazioni che ti servono per ottenere il risultato voluto
ecco un esempio :


<?php
echo <<< END
<html>
<head>
<title> demo_form.php</title>
</head>
<body>
<form action="demo_form.php" method="post">
First name: <input type="text" name="fname" /><br/>
Last name: <input type="text" name="lname"/><br/>
<input type="submit" value="Submit"/>
</form>
END;
if( isset($_POST["fname"]) && isset($_POST["lname"]))
{
echo '<br/><b>Welcome ' . $_POST["fname"] . ' ' . $_POST["lname"] . '!</b>';
}
echo '</body></html>'
?>


FILE:'demo_form.php'
secondo me bisogna fare queste poche cose:
Creare la pagina del form contenente anche le istruzioni
che devono elaborare la mail dal tuo sito.
Quindi come risultato del submit visualizzare un messaggio di avvenuto invio.
Fare anche procedere l'utente tramite link verso una pagina (ad esempio l'home page) di
nuovo del tuo sito. Poche cose ma chiare.
Non mi sembra una cosa complessa a mio modo di vedere.
Altro discorso è l'intercettazione degli errori e fare azioni preventive ai tentativi di hacking.

$te
10-12-2012, 08:23
Ciao, scusami se dico una cosa scontata, ma il form deve essere referenziato
ad una pagina in questo caso php dove tu attraverso il metodo che hai scelto per il passaggio dei dati
invii tutte le informazioni che ti servono per ottenere il risultato voluto
ecco un esempio :


<?php
echo <<< END
<html>
<head>
<title> demo_form.php</title>
</head>
<body>
<form action="demo_form.php" method="post">
First name: <input type="text" name="fname" /><br/>
Last name: <input type="text" name="lname"/><br/>
<input type="submit" value="Submit"/>
</form>
END;
if( isset($_POST["fname"]) && isset($_POST["lname"]))
{
echo '<br/><b>Welcome ' . $_POST["fname"] . ' ' . $_POST["lname"] . '!</b>';
}
echo '</body></html>'
?>


FILE:'demo_form.php'
secondo me bisogna fare queste poche cose:
Creare la pagina del form contenente anche le istruzioni
che devono elaborare la mail dal tuo sito.
Quindi come risultato del submit visualizzare un messaggio di avvenuto invio.
Fare anche procedere l'utente tramite link verso una pagina (ad esempio l'home page) di
nuovo del tuo sito. Poche cose ma chiare.
Non mi sembra una cosa complessa a mio modo di vedere.
Altro discorso è l'intercettazione degli errori e fare azioni preventive ai tentativi di hacking.

Grazie per i consigli.

Purtroppo il "problema" di base é che ho fatto il form tramite "contact form 7" e quindi non "comando" io la pagina action.

E' per quello che devo riuscire a "prendere" le informazioni dei dati del form per creare il pdf...ma in php non riesco (non so come fare "$_GET"). Magari usando javascript??

AllerITA
10-12-2012, 11:26
Penso che se utilizzi solo parametri di tipo testo non ci sono differenze tra post e get, e poi il sistema che hai illustrato non penso che invii un pdf via metodo GET, o sbaglio?
Cioè se puoi mandare Ciao Mondo in pdf puoi mandare una qualsiasi stringa.
Altra cosa è se devi caricare un pdf dal form. In questo caso mi sa che devi costruire il form con il metodo post a mano.

$te
10-12-2012, 12:58
Penso che se utilizzi solo parametri di tipo testo non ci sono differenze tra post e get, e poi il sistema che hai illustrato non penso che invii un pdf via metodo GET, o sbaglio?
Cioè se puoi mandare Ciao Mondo in pdf puoi mandare una qualsiasi stringa.
Altra cosa è se devi caricare un pdf dal form. In questo caso mi sa che devi costruire il form con il metodo post a mano.

é proprio questo che voglio fare! e la mia paura é proprio questa...quindi pensi che l'unico modo é rifare il form a mano?

Comunque, leggendo il sorgente creato dal plugin, il metodo é comunque quello post.

AllerITA
10-12-2012, 16:23
Il metodo POST è utilizzato per inviare file dal client al server, per quello che so io. Se ti studi un po il PHP vedrai come gestire l'invio di FILE come PDF.
Il discorso non è immediato, ci sono alcuni passaggi da fare.
Se non conosci il PHP puoi leggere alcune buone spiegazioni sul testo che ho
indicato in questo thread:

Thread PHP e Programmazione WEB (http://www.hwupgrade.it/forum/showthread.php?t=2523000)