Ciao a tutti ho un problema con la compilazione di un form che mi permette di far inviare dei curriculum dal visitatore del sito esiste qualcosa di gia fatto o qualcuno cosi gentile che mi spiega passo per passo come fare perpiacere? :mavieni:
ciao
benvenuto nel forum.
per inviare in allegati guarda l'uso della classe phpmailler negli articoli mrwm.
qualcosa di pronto dipende cosa vuoi fare.
comunque butta giù qualcosa e postalo (inizia a postare il form che vorresti fare), qualche buon'anima che ti aiuti la trovi
ciao
benvenuto nel forum.
per inviare in allegati guarda l'uso della classe phpmailler negli articoli mrwm.
qualcosa di pronto dipende cosa vuoi fare.
comunque butta giù qualcosa e postalo (inizia a postare il form che vorresti fare), qualche buon'anima che ti aiuti la trovi
Ciao grazie mille si mo provo a vedere li
Mi servirebbe un form con campo magari nome email un testo e la possibilità di allegarmi ed inviarmi il loro curriculum purtroppo ho provato con il codice in mio possesso ma nulla dove sbaglio?
pagina inviamail.php
<?php
// Recuperiamo i valori dal form e aggiungiamo la nostra email dove ricevere il file allegato con la mail
$to = "QUA METTO EMAIL";
$mail = $_POST['mail'];
$oggetto = $_POST['oggetto'];
$testomessaggio = $_POST['testomessaggio'];
// Creiamo le variabili per il file attachment
$attachment = $_FILES['attachment']['tmp_name'];
$attachment_type = $_FILES['attachment']['type'];
$attachment_name = $_FILES['attachment']['name'];
$headers = "From: " . $to;
// Verifichiamo se è stato eseguito l'upload del file
if (is_uploaded_file($attachment))
{
// usiamo la funzione fopen e fread per aprire e leggere il file e poi chiudiamo con fclose
$file = fopen($attachment,'rb');
$data = fread($file, filesize($attachment));
fclose($file);
// Codifichiamo il file adattandolo a base64 usando la funzione chunk_split di php
$data = chunk_split(base64_encode($data));
/* Creiamo una variabile per un divisore che deve divir
dere la parte testuale del messaggio dal file stesso altrimenti riceverete una serie illeggibili di caratteri
*/
$func_rand = md5(time());
$mime_boundary = "==Multipart_divisor_x{$func_rand}x";
// Aggiungo le intestazioni necessarie per l'attachment
$headers .= "\nMIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/mixed;\n";
$headers .= " divisor=\"{$mime_boundary}\"";
// Definisco il tipo di messaggio (MIME/multi-part)
$body .= "This is a multi-part message in MIME format.\n\n";
// Mettiamo il separatore
$body .= "--{$mime_boundary}\n";
// Questa è la parte "testuale" del messaggio
$body .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$body .= "Content-Transfer-Encoding: 7bit\n\n";
$body .= "From :" . $mail . "\n\n";
$body .= $messaggio . "\n\n";
// Ancora il separatore alla fine del contenuto testuale della mail
$body .= "--{$mime_boundary}\n";
// Adesso aggiungiamo l'allegato alla mail
$body .= "Content-Disposition: attachment;\n";
$body .= " filename=\"{$attachment_name}\"\n";
$body .= "Content-Transfer-Encoding: base64\n\n";
$body .= $data . "\n\n";
// chiudo con il separatore
$body .= "--{$mime_boundary}--\n";
}
else
{
$body = $testomessaggio;
}
// Invio la mail
if (mail($to, $oggetto, $body, $headers))
{
echo "<em>Mail e allegato inviati correttamenti</em>";
}else{
echo "<em>Ci sono problemi, verifica il codice php</em>";
}
?>
ciao
alcune cose:
il form va abbastanza bene, mentre lo script php e meglio rimetterci le mani.
1) secondo me, ti convine fare tutto in una stessa pagina (form+invio)
2) inviando così brutalmente sia i valori (testi e allegato) corri i grosso rischio che ti inviino delle porcherie (es un allegato delete_tutto_hard_disck.exe)
o semplicemente un indirizzo email tipo pinco+pallo.it ecc..
quindi bisogna mettere dei controlli a quello che ti fai inviare
3) la funzione nativa php mail() non sempre funzia come dovrebbe ti conviene passare alla classe PHPMailler
vai all'articolo https://www.mrw.it/php/articoli/inviare-email-classe-phpmailer_631.html
e scaricati lo zip, lo metti nella cartella dove hai il form e lo apri
dopo che l'hai aperto dovresti trovare le cartelle phpmasiller con i file class.phpmailler.php class.smtp.php e un'altra sottocartella language
li non toccare niente.
4) ti conviene inoltre mettere un captcha o qualcosa di simile in modo da non essere invaso da spam
fatto questo con un po' di pazienza assieme cominciamo a buttare giù qualcosa di decente.
non ti preuccupare è più semplice di quello che sembra (comunque siamo qui)
ciao
ecco come dovresti impostare la pagina che puoi chiamare (es) contatto.php, l'importante che sia .php
leggi i commenti (che poi se ti danno fastidio puoi togliere)
PHP:
<?php
//qui metteremo i controlli e l'invio (se i controlli sono OK)
//.......
?>
<!-- qui tutto l'html che ti serve -->
<div id="response" style="display:none;border:1px solid #ccc:padding:10px;background:#f4f4f4;"></div>
<!-- mettendo l'action così puoi mettere tutto nella stessa pagina e non preoccuparti di che nome gli dai -->
<form action="<?php echo {$_SERVER['REQUEST_URI']};?>" method="POST" enctype="multipart/form-data">
<table border="0">
<tr>
<td>* Tua Mail:</td>
<td><input type="text" name="mail" value="" id="mail" /></td>
</tr>
<tr>
<td>* Oggetto:</td>
<td><input type="text" name="oggetto" value="" id="oggetto" /></td>
</tr>
<tr>
<td>* Messaggio:</td>
<td><textarea cols="30" rows="6" name="testomessaggio" id="testomessaggio"></textarea></td>
</tr>
<tr>
<td>Allega file:</td>
<td><input type="file" name="attachment" /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Invia mail" id="sendmail" name="sendmail" /></td>
</tr>
<tr>
<td colspan="2">i campi contrassegnati con * sono obbligatori</td>
</tr>
</table>
</form>
<!-- qui tutto l'html che ti serve -->