aiuto form allegato.con funzione mail

eleinad85

Nuovo Utente
2 Ago 2010
17
0
0
ciao a tutti...allora ho fatto un form in html e dentro ho messo un campo file per far allegare alle persone online un proprio documento....all'interno dello script in php ho inserito il codice per farmi arrivare l'allegato per mail....ma non riesco a ricevere piu di un allegato,se ripeto lo stesso codice cambiando solo la variabile documento e inserendo documento2,me ne arriva solo uno avete capito? questo è lo script


PHP:
<?php

//
$receiverMail = '[email protected]';

//
$subject = 'CHECK LIST';

//
$struttura = trim(stripslashes($_POST['struttura']));
$indirizzo = trim(stripslashes($_POST['indirizzo']));
$citta = trim(stripslashes($_POST['citta']));
$cap = trim(stripslashes($_POST['cap']));
$piva = trim(stripslashes($_POST['piva']));
$auditor = trim(stripslashes($_POST['auditor']));
$checklist = trim(stripslashes($_POST['checklist']));









$d1_3= trim(stripslashes($_POST['d1_3']));
$d1_2= trim(stripslashes($_POST['d1_2']));
$d1_1= trim(stripslashes($_POST['d1_1']));
$d1_0= trim(stripslashes($_POST['d1_0']));
$d1_na= trim(stripslashes($_POST['d1_na']));

$d2_3= trim(stripslashes($_POST['d2_3']));
$d2_2= trim(stripslashes($_POST['d2_2']));
$d2_1= trim(stripslashes($_POST['d2_1']));
$d2_0= trim(stripslashes($_POST['d2_0']));
$d2_na= trim(stripslashes($_POST['d2_na']));

$d3_3= trim(stripslashes($_POST['d3_3']));
$d3_2= trim(stripslashes($_POST['d3_2']));
$d3_1= trim(stripslashes($_POST['d3_1']));
$d3_0= trim(stripslashes($_POST['d3_0']));
$d3_na= trim(stripslashes($_POST['d3_na']));

$d4_3= trim(stripslashes($_POST['d4_3']));
$d4_2= trim(stripslashes($_POST['d4_2']));
$d4_1= trim(stripslashes($_POST['d4_1']));
$d4_0= trim(stripslashes($_POST['d4_0']));
$d4_na= trim(stripslashes($_POST['d4_na']));

$d5_3= trim(stripslashes($_POST['d5_3']));
$d5_2= trim(stripslashes($_POST['d5_2']));
$d5_1= trim(stripslashes($_POST['d5_1']));
$d5_0= trim(stripslashes($_POST['d5_0']));
$d5_na=trim(stripslashes($_POST['d5_na']));

$d6_3= trim(stripslashes($_POST['d6_3']));
$d6_2= trim(stripslashes($_POST['d6_2']));
$d6_1= trim(stripslashes($_POST['d6_1']));
$d6_0= trim(stripslashes($_POST['d6_0']));
$d6_na=trim(stripslashes($_POST['d6_na']));

$d7_3= trim(stripslashes($_POST['d7_3']));
$d7_2= trim(stripslashes($_POST['d7_2']));
$d7_1= trim(stripslashes($_POST['d7_1']));
$d7_0= trim(stripslashes($_POST['d7_0']));
$d7_na= trim(stripslashes($_POST['d7_na']));

$d8_3= trim(stripslashes($_POST['d8_3']));
$d8_2= trim(stripslashes($_POST['d8_2']));
$d8_1= trim(stripslashes($_POST['d8_1']));
$d8_0= trim(stripslashes($_POST['d8_0']));
$d8_na= trim(stripslashes($_POST['d8_na']));





$email = $_POST['mail'];

//
$stringa1 = "ATTENZIONE Tutti i campi sono obbligatori!";

//
$stringa2 = "l'indirizzo mail non è valido";

//
$stringa3 = "la checklist è stata inviata.grazie!";



// formato del messaggio
$msgformat = "Il signor ha compilato la cecklist:\n\nnome checklist: $checklist\nstruttura: $struttura \nindirizzo: $indirizzo \ncitta':$citta \nmail: $email\ncap: $cap\npartita iva: $piva\nrisposte $d1_3 $d1_2 $d1_1 $d1_0 $d1_na \n$d2_3 $d2_2 $d2_1 $d2_0 $d2_na \n$d3_3 $d3_2 $d3_1 $d3_0 $d3_na \n$d4_3 $d4_2 $d4_1 $d4_0 $d4_na\n$d5_3 $d5_2 $d5_1 $d5_0 $d5_na\n$d6_3 $d6_2 $d6_1 $d6_0 $d6_na\n$d7_3 $d7_2 $d7_1 $d7_0 $d7_na\n$d8_3 $d8_2 $d8_1 $d8_0 $d8_na\


////note
$i=1;
while($i<=110)
{
if($_POST["note".$i]!='')
$msgformat.="Note".$i.":".$_POST["note".$i]."";
$i++;
}


////documento allegato
$allegato = $_FILES['documento']['tmp_name'];
$allegato_type = $_FILES['documento']['type'];
$allegato_name = $_FILES['documento']['name'];

$headers = "From: ".$email;
$msgformat_final = "";

// Verifico se il file è stato caricato correttamente via HTTP
// In caso affermativo proseguo nel lavoro...
if(is_uploaded_file($allegato)){
$file = fopen($allegato,'rb');
$data = fread($file, filesize($allegato));
fclose($file);

// Adatto il file al formato MIME base64 usando base64_encode
$data = chunk_split(base64_encode($data));

// Genero il "separatore"
// Serve per dividere, appunto, le varie parti del messaggio.
// Nel nostro caso separerà la parte testuale dall'allegato
$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

// Aggiungo le intestazioni necessarie per l'allegato
$headers .= "\nMIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/mixed;\n";
$headers .= " boundary=\"{$mime_boundary}\"";

// Metto il separatore
$msgformat_final .= "--{$mime_boundary}\n";

// Questa è la parte "testuale" del messaggio
$msgformat_final .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$msgformat_final .= "Content-Transfer-Encoding: 7bit\n\n";
$msgformat_final .= $msgformat . "\n\n";

// Metto il separatore
$msgformat_final .= "--{$mime_boundary}\n";

// Aggiungo l'allegato al messaggio
$msgformat_final .= "Content-Disposition: attachment;\n";
$msgformat_final .= " filename=\"{$allegato_name}\"\n";
$msgformat_final .= "Content-Transfer-Encoding: base64\n\n";
$msgformat_final .= $data . "\n\n";

// chiudo con il separatore
$msgformat_final .= "--{$mime_boundary}--\n";
}else{
$msgformat_final = $msgformat;
}





// definisce i campi obbligatori (da personalizzare con quelli del proprio form)
if (( $indirizzo == "" ) || ( $struttura == "" ) || ( $email == "" ))




// popup di errore sui campi obbligatori
{
echo "<script language=\"JavaScript\">\n";
echo "alert(\"$stringa1\");\n";
echo "java-script:history.go(-1);";
echo "</script>";
}

// controllo del formato della email
elseif(preg_match("#([\w-\.]+)@((?:[\w]+\.)+)([a-zA-Z]{2,4})#", $email))
{ mail($receiverMail, $subject, $msgformat_final, $headers);


// nelle prossime righe definisco se voglio un semplice popup che avvisa l'utente che il messaggio è stato inviato (OPZIONE1) e che lo fa ritornare automaticamente alla pagina dove ha compilato il form

// OPPURE

// se ridirezionarlo verso una pagina web specifica (OPZIONE2)


// OPZIONE1:
// popup di messaggio inviato e ritorno alla pagina precedente
// decommentare $stringa3
// commentare tutto se si usa OPZIONE2 (per commentare usare /* all'inizio e */ alla fine delle righe da commentare)

echo "<script language=\"JavaScript\">\n";
echo "alert(\"$stringa3\");\n";
echo "java-script:history.go(-1);";
echo "</script>";
}

// OPZIONE2:
// popup di messaggio inviato e ridirezionamento ad una pagina web
// decommentare $redirect
// commentare tutto se si usa OPZIONE1 (per commentare usare /* all'inizio e */ alla fine delle righe da commentare)

/* echo "<script language=\"JavaScript\">\n";
echo "window.location.href=(\"$redirect\");\n";
echo "</script>";
}
*/

// popup di errore se fallisce il controllo formato email
else
{
echo "<script language=\"JavaScript\">\n";
echo "alert(\"$stringa2\");\n";
echo "java-script:history.go(-1);";
echo "</script>";
}
?>
 
Ultima modifica di un moderatore:
si ho visto,ma io devo far compilare delle domande con checkbox e text area,cosa devo scrivere alla mail del destinatario??? io non la utilizzo,anzi sono loro ke devono scrivere la loro mail....

PHP:
//definiamo le intestazioni e il corpo del messaggio
$messaggio->From='[email protected]';<<<<<qua devo mettere la mia mail dove ricevo il form?
$messaggio->AddAddress('[email protected]');
$messaggio->AddReplyTo('[email protected]'); <<<<<e qua?
$messaggio->Subject='Prova.';
$messaggio->Body=stripslashes('Ciao!!!!');
 
Ultima modifica di un moderatore:
e cmq non capisco se nella pagina html dove cè il form,devo mettere action "nomescript.php" e sul file in php scrivero quel codice della guida cambiando cn le mie variabili
 
Ragazzi, sono stufo di ripeterlo. Usate gli appositi tag per la formattazione automatica del codice sorgente dei vostri programmi. È un'abitudine che rende le discussioni più pulite e leggibili.

Per quanto riguarda la discussione, ecco come devi configurare PHPMailer:
PHP:
// indirizzo email del mittente
$messaggio->From = '[email protected]';
// indirizzo email del destinatario
$messaggio->AddAddress('[email protected]');
// indirizzo email del mittente
$messaggio->AddReplyTo('[email protected]');
// oggetto del messaggio
$messaggio->Subject = 'Prova.';
// corpo del messaggio
$messaggio->Body = stripslashes('Ciao!!!!');
 
s

si ho capito ma dove metto la mail dove ricevo il form ke gli utenti inviano? e come faccio a vedere qualè la loro mail?
 
le basi le so..ma cmq la mia domanda era un altra,io non uso phpmailer anke xke il mio script funziona benissimo,la mia domanda era come potevo aggiungere un altro allegato usando quello script...vabbè non fa nulla grazie lo stesso
 
qualcosa non va nella dichiarazione di questa variabile:
PHP:
$msgformat = "Il signor ha compilato la cecklist:\n\nnome checklist: $checklist\nstruttura: $struttura \nindirizzo: $indirizzo \ncitta':$citta \nmail: $email\ncap: $cap\npartita iva: $piva\nrisposte $d1_3 $d1_2 $d1_1 $d1_0 $d1_na \n$d2_3 $d2_2 $d2_1 $d2_0 $d2_na \n$d3_3 $d3_2 $d3_1 $d3_0 $d3_na \n$d4_3 $d4_2 $d4_1 $d4_0 $d4_na\n$d5_3 $d5_2 $d5_1 $d5_0 $d5_na\n$d6_3 $d6_2 $d6_1 $d6_0 $d6_na\n$d7_3 $d7_2 $d7_1 $d7_0 $d7_na\n$d8_3 $d8_2 $d8_1 $d8_0 $d8_na\
 

Discussioni simili