Ciao,
ho trovato proprio su questo forum il seguente script che serve per inviare file attraverso un formmail.
Il modulo (che io ho chiamato prova_upload.php) funziona bene per tutti i tipi di file da uploadare tranne che per i .jpg: assurdo!
Ho fatto molte prove con i .gif e i .tif e non danno nessun problema, mentre quando cerco di caricare un .jpg a volte mi dice che il tipo di file non è consetito mentre altre dice che non ho caricato nessun file. Qualcuno sa aiutarmi? Io non capisco proprio!
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#D2D2D2" leftmargin="3" topmargin="3" marginwidth="0" marginheight="0" text="#000000">
<?
// RENDIAMO LO SCRIPT COMPATIBILE CON LE VERSIONI DI PHP < 4.1.0
if(!isset($_POST)) $_POST = $HTTP_POST_VARS;
if(!isset($_FILES)) $_FILES = $HTTP_POST_FILES;
function validate_upload($thefile) {
global $thefile_type, $thefile_name, $thefile_size;
$my_max_file_size = "20240000"; # in bytes
$registered_types = array(
"image/jpeg" => ".jpg",
"image/tiff" => ".tif",
"image/gif" => ".gif"
); # these are only a few examples, you can find many more!
$allowed_types = array("image/jpeg", "image/tiff", "image/gif");
$start_error = "\n";
if ($thefile == "none") { # do we even have a file?
$error .= "\n- Nessun documento allegato.
";
} else { # check if we are allowed to upload this file_type
if ($thefile_size > $my_max_file_size) $error .= "\n- Il file allegato supera la dimensione massima consentita.
";
if (!in_array($thefile_type, $allowed_types)) {
$error .= "\n- Il file che hai inserito non è del tipo richiesto:
\n";
while ($type = current($allowed_types)) {
$error .= "\n" . $registered_types[$type] . " (" . $type . ")
";
next($allowed_types);
}
$error .= "\n";
}
if ($error) {
$error = $start_error . $error . "\n";
return $error;
} else {
return false;
}
}
} # END validate_upload
?>
<font face="Arial, Helvetica, sans-serif" size="2">
<?
if ($_POST['op']=="invio") {
$error=0;
$msg="";
if ($nome=="") {
$error=1;
$msg.="- Il campo nome è vuoto.
";
}
if ($cognome=="") {
$error=1;
$msg.="- Il campo cognome è vuoto.
";
}
if ($titolo=="") {
$error=1;
$msg.="- Il campo cognome è vuoto.
";
}
if ($email=="") {
$error=1;
$msg.="- Il campo email è vuoto.
";
}
if ($email!="" && !eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$",$email)) {
$error=1;
$msg.="- L'email inserita non è valida.
";
}
$error_file="";
if (!$thefile || $thefile=="none" || $thefile=="") {
$error=1;
$msg.="- Non ha inserito l'allegato.
";
} else $error_file = validate_upload($thefile);
if ($error==1 || $error_file!="") {
echo"
Attenzione! Si sono verificati i seguenti errori:
$msg
$error_file
<a href=\"java script:history.back()\">Clicchi qui</a> per reinserire i dati.";
} else {
// parte modificata
$attach = $_FILES["thefile"]["tmp_name"];
$file_name = $_FILES["thefile"]["name"];
$file_type = $_FILES["thefile"]["type"];
$file_size = $_FILES["thefile"]["size"];
$file = @fopen($attach, "r");
$contents = @fread($file, $file_size);
$curr = chunk_split(base64_encode($contents));
@fclose($file);
$boundary = "XX-1234DED00099A"; // messo in un array per maggior facilità d'uso
$emailto="info@prova.it"; // INSERIRE L'EMAIL QUI!!
$data=date("j/m/Y");
$ora=date("h:i:s");
$headers = "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\n";
$headers .= "Content-Transfer-Encoding: 7bit\n";
$headers .= "From: $email\n";
$headers .= "X-attachments: $file_name\n";
$oggetto_send="$file_name";
$messaggio="--$boundary\n";
$messaggio.="Content-Type: text/plain; charset=us-ascii\n";
$messaggio.="Content-Transfer-Encoding: 7bit\n\r";
$messaggio.="Curriculum inviato il $data alle $ora\n\r\nDati inseriti\n";
$messaggio.="Nome: $nome\n\rCognome: $cognome\n";
if ($telefono!="") $messaggio.="Telefono: $telefono\n";
$messaggio.="Email: $email\nCommento:\n $commento\n";
$messaggio.="--$boundary\n";
$messaggio.="Content-Type: $file_type; name=\"$file_name\"\n";
$messaggio.="Content-Transfer-Encoding: base64\n";
$messaggio.="Content-Disposition: attachment; filename=\"$file_name\"\n\n";
$messaggio.="$curr\n";
$messaggio.="--$boundary--\n";
if (!mail($emailto, $oggetto_send, $messaggio, $headers)) {
echo "
Attenzione.
Si sono verificati degli errori durante l'invio della Email.
Vi preghiamo di riprovare <a href=\"java script: history.back()\">cliccando qui.</a>
Se l'errore persiste Vi invitamo a riprovare più tardi. Grazie.";
}
else {
$messaggio_risposta="Grazie per averci contattato.\n\rIl vostro contributo è stato inoltrato al responsabile.\n\r\n\rDati inseriti\n";
$messaggio_risposta.="Nome: $nome\n\rCognome: $cognome\n\r";
if ($telefono!="") $messaggio_risposta.="titolo: $titolo\n\r";
$messaggio_risposta.="Commento:\n\r$commento\n\r\n \r";
$messaggio_risposta.="Distinti saluti.\n\r";
$oggetto2="Prova invio email con allegato";
mail($email, $oggetto2, $messaggio_risposta,"From: Prova<$emailto>");
echo "
Email inviata correttamente.
I dati inseriti sono i seguenti:
";
echo"Nome: $nome
Cognome: $cognome
";
if ($telefono!="") echo"Titolo: $titolo
";
echo"Email: $email
Commento: ".nl2br($commento)."
Grazie per averci contattato.";
}
}
} else {
?>
<form enctype="multipart/form-data" method="post" action="prova_upload.php?op=invio" name="contatti">
<table width="550" border="0" cellspacing="3" cellpadding="0">
<tr>
<td>Nome *</td>
<td>
<input type="text" name="nome" size="30">
</td>
</tr>
<tr>
<td>Cognome *</td>
<td>
<input type="text" name="cognome" size="30">
</td>
</tr>
<tr>
<td>Titolo*</td>
<td>
<input type="text" name="titolo" size="30">
</td>
</tr>
<tr>
<td>Email *</td>
<td>
<input type="text" name="email" size="30">
</td>
</tr>
<tr>
<td>Allegare file (sono permessi i file con estensione .doc, .pdf, .ps) *</td>
<td>
<input type="hidden" name="MAX_FILE_SIZE" value="102400">
<input name="thefile" type="file" SIZE="35">
</td>
</tr>
<tr>
<td>Commento *</td>
<td>
<textarea name="commento" wrap="VIRTUAL" cols="30" rows="5"></textarea>
</td>
</tr>
<tr>
<td colspan="2">
<div align="center">
<input type="hidden" name="op" value="invio">
<input type="submit" name="Submit" value="Invia">
<input type="reset" name="Submit2" value="Reimposta">
</div>
</td>
</tr>
</table>
</form>
<font size="1">I campi con l'asterisco sono obbligatori.
<?
}
?>
</font>
</table>
</body>
</html>