Salve.
Ho creato un form che dovrebbe inviare i dati inseriti via email, nel form c'e' anche un campo del file per allegare un file che dovrebbe arrivare in allegato per posta elettronica. Il tutto però non funziona.
Autatemi per favore, sono disperato.
Questo e' il codice del form:
codice:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Carrello</title>
<script type="text/javascript">
function openindex( htm )
{
window.open(htm,'index','scrollbars=no,menubar=no,left=200,top=200,resizable=yes,width=470,height=500,alwaysraised=yes');
}
function validazione(){
with(document.form) {
if(nome.value=="") {
alert("Inserire il nome");
nome.focus();
return false;
}
if(cognome.value=="") {
alert("Inserire il cognome");
cognome.focus();
return false;
}
if(sociale.value=="") {
alert("Inserire la ragione sociale");
sociale.focus();
return false;
}
if(indirizzo.value=="") {
alert("Inserire l'indirizzo");
indirizzo.focus();
return false;
}
if(cap.value=="") {
alert("Inserire il CAP");
cap.focus();
return false;
}
if(citta.value=="") {
alert("Inserire la città");
citta.focus();
return false;
}
if(provincia.value=="") {
alert("Inserire la provincia");
provincia.focus();
return false;
}
if(iva.value=="") {
alert("Inserire la partita iva");
iva.focus();
return false;
}
if(telefono.value=="") {
alert("Inserire il telefono");
telefono.focus();
return false;
}
if(mail.value=="") {
alert("Inserire l' e-mail");
mail.focus();
return false;
}
var stato=true;
if(mail.value.indexOf(" ")!=-1) {
mail.focus();
stato=false;
}
var chiocciola=mail.value.indexOf("@");
if(chiocciola<2) {
mail.focus();
stato=false;
}
var punto=mail.value.indexOf(".", chiocciola);
if(punto<chiocciola+3) {
mail.focus();
stato=false;
}
var lung=mail.value.length;
if(lung-punto<3) {
mail.focus();
stato=false;
}
if(stato==false) {
alert("E-mail non valida");
return stato;
}
}
alert("Il modulo è completo, grazie");
return true;
}
function sel(id) {
if (!document.getElementById) return;
selDiv = document.getElementById(id);
selDiv.style.backgroundColor = "#ffc";
}
function des(id) {
if (!document.getElementById) return;
selDiv = document.getElementById(id);
selDiv.style.backgroundColor = "#E5E5E5";
}
</script>
<link href="carrello.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="intestazione">[img]immagini/cooltext3541725.jpg[/img]</div>
<div id="corpo">
<div id="modulo">
<form action="invia.php" method="post" name="form" onsubmit="return validazione();">
<input type="hidden" name="destinatario" value="gingy78@gmail.com">
<fieldset id="informazioni">
<legend>Informazioni generali</legend>
<label for="nome">Nome:</label> <input type="text" name="nome" id="nome" onfocus="sel('nome')" onblur="des('nome')" title="Inserisci il nome" value="" /></p>
<label for="cognome">Cognome:</label> <input type="text" name="cognome" id="cognome" onfocus="sel('cognome')" onblur="des('cognome')" title="Inserisci il cognome" value="" /></p>
<label for="sociale">Ragione Sociale:</label><input type="text" name="sociale" id="sociale" onfocus="sel('sociale')" onblur="des('sociale')" title="Inserisci la ragione sociale" value="" /></p>
<label for="indirizzo">Indirizzo:</label><input type="text" name="indirizzo" id="indirizzo" onfocus="sel('indirizzo')" onblur="des('indirizzo')" title="Inserisci l'indirizzo" value="" /></p>
<label for="cap">CAP:</label><input type="text" name="cap" id="cap" onfocus="sel('cap')" onblur="des('cap')" title="Inserisci il CAP" value="" /></p>
<label for="citta">Città:</label><input type="text" name="citta" id="citta" onfocus="sel('citta')" onblur="des('citta')" title="Inserisci la città" value="" /></p>
<label for="provincia">Provincia:</label><input type="text" name="provincia" id="provincia" onfocus="sel('provincia')" onblur="des('provincia')" title="Inserisci la provincia" value="" /></p>
<label for="iva">Partita IVA:</label><input type="text" name="iva" id="iva" onfocus="sel('iva')" onblur="des('iva')" title="Inserisci la partita IVA" value="" /></p>
<label for="telefono">Telefono:</label><input type="text" name="telefono" id="telefono" onfocus="sel('telefono')" onblur="des('telefono')" title="Inserisci il numero di telefono" value="" /></p>
<label for="mail">Email:</label><input type="text" name="mail" id="mail" onfocus="sel('mail')" onblur="des('mail')" title="Inserisci un'email valida" value="" /></p>
</fieldset>
<fieldset id="informazioni2">
<legend>Compila il modulo d'ordine</legend>
<label for="allegato">Lettere da stampare:</label><input type="file" name="allegato" id="allegato" onfocus="sel('allegato')" onblur="des('allegato')" title="Inserisci gli allegati con le lettere da stampare" value="" /></p>
<label for="allegato2">Elenco destinatari:</label><input type="file" name="allegato2" id="allegato2" onfocus="sel('allegato2')" onblur="des('allegato2')" title="Inserisci l'allegato con i destinatari" value="" /></p>
<label for="campotesto">Note per la stampa:</label><textarea name="campotesto" rows="5" cols="" id="campotesto" class="texta" onfocus="sel('campotesto')" onblur="des('campotesto')"></textarea></p>
</fieldset>
<fieldset id="informazioni3">
<legend>Persona che effettua l'ordine</legend>
<label for="nome2">Nome:</label> <input type="text" name="nome2" id="nome2" onfocus="sel('nome2')" onblur="des('nome2')" title="Inserisci il nome della persona che effettua l'ordine" value="" /></p>
<label for="cognome2">Cognome:</label> <input type="text" name="cognome2" id="cognome2" onfocus="sel('cognome2')" onblur="des('cognome2')" title="Inserisci il cognome della persona che effettua l'ordine" value="" /></p>
</fieldset>
<fieldset id="conferma">
<legend>Conferma e invio dei dati</legend>
<input type="submit" name="submit" id="invia" value="Conferma" />
</fieldset>
</form>
</div>
</div>
<div id="pie_di_pagina">
Powered by Infoposte</p></div>
</body>
</html>
Questo e' il codice php di invio:
codice:
<?php
// Recupero il valore dei campi del form
$destinatario = $_POST['destinatario'];
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$sociale = $_POST['sociale'];
$indirizzo = $_POST['indirizzo'];
$cap = $_POST['cap'];
$citta = $_POST['citta'];
$provincia = $_POST['provincia'];
$iva = $_POST['iva'];
$telefono = $_POST['telefono'];
$mail = $_POST['mail'];
$campotesto = $_POST['campotesto'];
// Valorizzo le variabili relative all'allegato
$allegato = $_FILES['allegato']['tmp_name'];
$allegato_type = $_FILES['allegato']['type'];
$allegato_name = $_FILES['allegato']['name'];
// Creo 2 variabili che riempirò più avanti...
$headers = "From: " . $mail;
$msg = "";
// Verifico se il file è stato caricato correttamente via HTTP
// In caso affermativo proseguo nel lavoro...
if (is_uploaded_file($allegato))
{
// Apro e leggo il 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}\"";
// Definisco il tipo di messaggio (MIME/multi-part)
$msg .= "This is a multi-part message in MIME format.\n\n";
// Metto il separatore
$msg .= "--{$mime_boundary}\n";
// Questa è la parte "testuale" del messaggio
$msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$msg .= "Content-Transfer-Encoding: 7bit\n\n";
$msg .= $campotesto . "\n\n";
// Metto il separatore
$msg .= "--{$mime_boundary}\n";
// Aggiungo l'allegato al messaggio
$msg .= "Content-Disposition: attachment;\n";
$msg .= " filename=\"{$allegato_name}\"\n";
$msg .= "Content-Transfer-Encoding: base64\n\n";
$msg .= $data . "\n\n";
// chiudo con il separatore
$msg .= "--{$mime_boundary}--\n";
}
else
{
$msg = $campotesto;
}
// Invio la mail
if (mail($destinatario, $nome, $cognome, $sociale, $indirizzo, $cap, $citta, $provincia, $iva, $telefono, $mail, $campotesto, $headers))
{
echo "
Mail inviata con successo!</p>";
}else{
echo "
Errore!</p>";
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento senza titolo</title>
</head>
<body>
</body>
</html>