ciao, ho provato a riscrivere il codice in maniera da separare il form con il modulo dal codice di validazione ed invio in PHP. Ho provato a modificare il codice così da poter avere un minimo di stile html nel messaggio di risposta. Ho riscritto tutto ottenendo quanto segue:
Modulo.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<HTML>
<head>
<title> PHP upload test page </title>
</head>
<body>
<form enctype="multipart/form-data" method="post" action="send.php" name="modulo">
Nome e cognome:
<input type="text" name="nome" size="30">
</p>
Indirizzo e-mail:
<input type="text" name="email" size="30">
</p>
<input type="hidden" name="MAX_FILE_SIZE" id="MAX_FILE_SIZE" value="100000">
File da caricare:
<input type="file" name="file1" size="50">
Testo del messaggio:
<textarea rows="10" cols="30" name="messaggio">
</textarea>
</p>
<input type="submit" value="Invia">
<input type="reset" value="Cancella">
</p>
</form>
</body>
</html>
Send.php
<?php
$nomemittente = $_POST["nome"];
$emailmittente = $_POST["email"];
$messaggiomittente = $_POST["messaggio"];
$percorso = "servizi/"; //nome della cartella dove archiviare i files$percorso = "servizi/"; //nome della cartella dove archiviare i files
function inviaMail(
$destinatario,$oggetto,$testo,$da,$mittente)
{
$mail = array ("\'" => "'");
$testo = @strtr($testo, $mail);
$testo =
'<html><body>'
.@stripslashes($testo).'</body></html>
'."\r\n\r\n";
$head =
'From: '.$da.' <'.$mittente.'>'."\r\n";
$head .=
'Content-Type: text/html; charset="ISO-8859-1"'."\r\n";
$head .=
'Content-Transfer-Encoding: quoted-printable'."\n\r\n";
if(@mail ($destinatario, $oggetto, $testo, $head))
{
echo 'Messaggio inviato con successo';
}else{
echo 'Errore! Impossibile inviare il messaggio.';
}
}
if ($_FILES['file1']['error'] == 4) { echo 'file non inserito
';} else {
if ($_FILES['file1']['error'] == 2) { echo 'il file eccede la dimensione di 100Kb
';} else {
if (is_uploaded_file($_FILES['file1']['tmp_name'])) {
if (move_uploaded_file($_FILES['file1']['tmp_name'], $percorso.$_FILES['file1']['name'])) {
str_replace(' ', '_', $_FILES['file1']['tmp_name']);
//test di funzionamento
$destinatario = 'info@mialmail.net';
$oggetto = 'Test e-mail in HTML';
// $testo = $messaggiomittente;
$download = "www.miosito.com/servizi/".$_FILES['file1']['name'];
$testo = 'Ciao '.$nomemittente .' ti ha inviato un filesssssssssssssss';
$da = $nomemittente;
$mittente = $emailmittente;
$download = "www.miosito.com/servizi/".$_FILES['file1']['name']; @inviaMail(
$destinatario, $oggetto, $testo, $da, $mittente);
echo 'Nome file: '.$_FILES['file1']['name'].'
';
echo 'MIME Type: '.$_FILES['file1']['type'].'
';
echo 'Dimensione: '.$_FILES['file1']['size'].' byte
';
echo '======================
';
echo 'File caricato correttamente
';
echo 'carica un altro file';
} else {echo 'si è verificato un errore durante il caricamento
';}
} else {echo 'si è verificato un errore durante il caricamento
';}
}
}
?>
Il primo problema che ho evidenziato riguarda la stringa concatenata alla variabile, o a più di esse (nella revisione finale dovrò ottenere la seguente,
'Ciao '.$nomemittente ' Ti ha mandato una file tramite il sito www.miosito.com
lo puoi scaricare dal link ' ,$download;
e pure concatenare un eventuale testo opzionale inserito nel form)
$testo = 'Ciao '.$nomemittente .' ti ha inviato un filesssssssssssssss';
L'ho scritta così xchè ho testato che il problema riguarda la lunghezza della stessa; se vado oltre come numero di caratteri nn manda nessuna mail, se la faccio più corta lo invia.
Ho cercato su internet, ma nn ho trovato nulla.
Il secondo problema riguarda il nome del file che mando sul server. se contiene degli spazi es. "disegno scala.jpg" nella mail di risposta mi appare "disegno", ottenendo così un percorso sbagliato.
Ho provato con
str_replace(' ', '_', $_FILES['file1']['tmp_name']);
ma nn sono riuscito ad ottenere "disegno_scala".jpg
Dove sbaglio? grazie per ogni vs suggerimento