Script formmail con allegati su altervista funziona altrove no

Rott

Nuovo Utente
6 Ott 2006
1
0
0
Ciao a tutti, ho un piccolo problema con uno script in php per mandare email con un allegato.
Con il sito hostato su altervista la cosa funzionava, mi arrivavano gli allegati integri, mentre con il nuovo hosting mi arrivano allegati danneggiati, ovvero con una dimensione pari a 0kb....
Non so se è un problema di codice perchè su un hosting funziona tutto bene sull'altro no.

Sotto posto il codice, non pretendo che ve lo leggiate, più che altro mi basta un consiglio su cosa vedere di sistemare o fare

Codice:
function get_ext($key) {
    $key=strtolower(substr(strrchr($key, "."), 1));
    // Cause there the same right?
    $key=str_replace("jpeg","jpg",$key);
    return $key;
}
 
function phattach($file,$name) {
    global $boundary;
    
    $fp=@fopen($file,"r");
    $str=@fread($fp, filesize($file));
    $str=@chunk_split(base64_encode($str));
    $message="--".$boundary."\n";
    $message.="Content-Type: application/octet-stream; name=\"".$name."\"\n";
    //$message.="Content-disposition: attachment\n"; Thanks goes to someone named Chris (I think, it was awhile ago) for his fix below!
    $message.="Content-disposition: attachment; filename=\"".$name."\"\n";
    $message.="Content-Transfer-Encoding: base64\n";
    $message.="\n";
    $message.="$str\n";
    $message.="\n";
 
    return $message;
}
 
//Little bit of security from people forging headers. People are mean sometimes :(
function clean($key) {
    $key=str_replace("\r", "", $key);
    $key=str_replace("\n", "", $key);
    $find=array(
        "/bcc\:/i",
        "/Content\-Type\:/i",
        "/Mime\-Type\:/i",
        "/cc\:/i",
        "/to\:/i"
    );
  $key=preg_replace($find,"",$key);
  return $key;
}
 
// Safe for register_globals=on =)
 
$error="";
$types="";
$sent_mail=false;
 
// Do some loopy stuff for the valid file types so people can see what types are valid before they try and upload invalid ones.
 
$ext_count=count($allowtypes);
$i=0;
 
foreach($allowtypes AS $extension) {
    
    //Gets rid of the last comma
    
    If($i <= $ext_count-2) {
        $types .="*.".$extension.", ";
    } Else {
        $types .="*.".$extension;
    }
    $i++;
}
unset($i,$ext_count); // why not
 
 
// If they post the form start the mailin'!
 
If($_POST['submit']==true) {
    extract($_POST, EXTR_SKIP);
 
        // Check the form for errors
    
        If(trim($yourname)=="") {
            $error.="Non hai inserito il tuo nome e cognome.<br />";
        }
        
        If(trim($youremail)=="") {
            $error.="Non hai inserito il tuo indirizzo email.<br />";
        } Elseif(!eregi("^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,4}\$",$youremail)) {
            $error.="Invalid email address.<br />";
        }
 
        If(trim($emailsubject)=="") {
            $emailsubject=$defaultsubject;
        }
 
        If(trim($yourmessage)=="") {
            $error.="Non hai inserito un messaggio.<br />";
        }
        
        // Verify Attachment info
        
        If($allowattach > 0) {
            
            //Loopish
            
            For($i=0; $i <= $allowattach-1; $i++) {
                
                If($_FILES['attachment']['name'][$i]) {
                    
                    $ext=get_ext($_FILES['attachment']['name'][$i]);
                    $size=$_FILES['attachment']['size'][$i];
                    $max_bytes=$max_file_size*1024;
                    
                    //Check if the file type uploaded is a valid file type.
                    
                    If(!in_array($ext, $allowtypes)) {
                        
                        $error.= "Estensione del file allegato non valida: ".$_FILES['attachment']['name'][$i].", puoi allegare solo files in ".$types." Grazie.<br />";
                        
                        //Check the size of each file
                        
                    } Elseif($size > $max_bytes) {
                        $error.= "Il tuo: ".$_FILES['attachment']['name'][$i]." è troppo grande. Puoi allegare files grandi al massimo ".$max_file_size."kb.<br />";
                    }
                    
                } // If Files
                
            } // For
 
            //Tally the size of all the files uploaded, check if it's over the ammount.
            
              $total_size=array_sum($_FILES['attachment']['size']);
              
            $max_file_total_bytes=$max_file_total*1024;
            
            If($total_size > $max_file_total_bytes) {
                $error.="Puoi allegare files grandi al massimo ".$max_file_total."kb<br />";
            }
            
        } // If Allowattach
 
    If($error) {
    
        $display_message=$error;
 
    } Else {
        
        If($use_subject_drop AND is_array($subjects) AND is_array($emails)) {
            $subject_count=count($subjects);
            $email_count=count($emails);
            
            If($subject_count==$email_count) {
                
                $myemail=$emails[$emailsubject];
                $emailsubject=$subjects[$emailsubject];
                
            }
            
        }
        
        
        $boundary=md5(uniqid(time()));
        
        //Little bit of security from people forging headers. People are mean sometimes :(
        
        $yourname=clean($yourname);
        $yourmessage=clean($yourmessage);
        $youremail=clean($youremail);
        
        //Headers
        
        $headers="From: ".$yourname." <".$youremail.">\n";
        $headers.="Reply-To: ".$yourname." <".$youremail.">\n";
        $headers.="MIME-Version: 1.0\n";
        $headers.="Content-Type: multipart/mixed; boundary=\"".$boundary."\"\n";
        $headers.="X-Sender: ".$_SERVER['REMOTE_ADDR']."\n";
        $headers.="X-Mailer: PHP/".phpversion()."\n";
        $headers.="X-Priority: ".$priority."\n";
        $headers.="Return-Path: <".$youremail.">\n";
        $headers.="This is a multi-part message in MIME format.\n";
 
        //Message
            
        $message = "--".$boundary."\n";
        $message.="Content-Type: text/plain; charset=\"iso-8859-1\"\n";
        $message.="Content-Transfer-Encoding: quoted-printable\n";
        $message.="\n";
        $message.="$yourmessage";
        $message.="\n";
 
        //Lets attach to something! =)
        
        If($allowattach > 0) {
            
            For($i=0; $i <= $allowattach-1; $i++) {
                
                If($_FILES['attachment']['name'][$i]) {
                    
                    $message.=phattach($_FILES['attachment']['tmp_name'][$i],$_FILES['attachment']['name'][$i]);
                    
                }
                
            } //For
            
        } // If
        
        
        // End the message
        
        $message.="--".$boundary."--\n";
        
        // Send the completed message
        
        If(!mail($myemail,$emailsubject,$message,$headers)) {
            
            Exit("Attenzione, è avvenuto un errore. \n");
            
        } Else {
        
            $sent_mail=true;
            
        }
 
    } // Else
 
} // $_POST
 
Discussioni simili
Autore Titolo Forum Risposte Data
F Somma di più tabelle da script Javascript 0
L Script per convertire numeri in parole Javascript 2
H Eliminazione script. Photoshop 0
S Script Google Translate scomparso HTML e CSS 3
P lanciare script asp (o php) da jquery Javascript 1
G Script notifiche dekstop aiuto Javascript 0
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
P Passare solo alcuni parametri a script per CSV PHP 0
M Collegamento tra form html e script php PHP 4
F Script java elenco alfabetico non funziona Javascript 3
F Script non funzionante. Devo elencare in ordine alfabetico un elenco di nominativi, ma lo script non Javascript 2
P Script upload immagini jQuery 0
M Premature end of script headers PHP 1
Cosina script data aggiornamento pagina Javascript 1
R Distribuire uno Script "Facebook Auto Post" PHP 0
F Creazione script Tv Presentati al Forum 1
N Script elenco file HTML HTML e CSS 5
felino PHP e script generazione file excel PHP 2
MarcoGrazia Se non sai se riceverai da GET o da POST, puoi verificarlo e far scegliere allo script. Snippet PHP 0
Beppe2 Ritardare esecuzione script Javascript 2
R Primo script in PHP / CSS PHP 4
felino Script PHP per leggere un file JSON. autenticazione? PHP 4
T [a pagamento] programmatore PHP che mi aiuti a migrare gli script da vecchia versione PHP a nuova Offerte e Richieste di Lavoro e/o Collaborazione 1
T script jquery non funziona più dopo il passaggio a MVC jQuery 5
F Aiuto java script Javascript 2
Max 1 [PHP] Script che funziona in locale e non online PHP 16
K Help: problema con uno script di booking in php! PHP 0
O [PHP] inviare dati da form e script ajax PHP 0
P [PHP] Aggiungere un mio script a prestashop? PHP 10
D [Javascript] inserire uno script in un file php Javascript 6
Gabriele15497514 php testo errato durante la lettura del file txt quando lo script viene eseguito contemporaneamente PHP 3
R [Javascript] Aiuto su questo script Javascript 2
M [HTML] Stesso script su 2 blog CMS (Content Management System) 4
romeocharly [PHP] Script per rinominare in automatico le immagini inviate da ftp PHP 0
elpirata [Javascript] Lo script alle volte funzione altre volte no Javascript 0
A [PHP] Script con array con numeri che iniziano per 00 PHP 2
F [HTML] Failed script su coffee cookies HTML e CSS 1
TpD [PHP] Script per organizzazione presenza eventi PHP 3
D [PHP] script che invii una mail automatica dopo risposta ad una discussione di un forum PHP 0
T interpretare uno script php non fatto da me... PHP 3
Cosina Modifica script textarea jQuery 0
O Script PHP e loro visibilità PHP 4
A [PHP] Script Ip camera su altervista senza sottocartelle PHP 6
M [PHP] Problema script ricezione e invio posta... PHP 1
Y Codice AdSense su script php PHP 4
L [PHP] Problema Script 'Not Found' PHP 4
webmachine [PHP] Script per censurare parole PHP 4
L [HTML] Domanda: Utilizzo script HTML e CSS 0
C richiamare una funzione in un altro script php PHP 1
otto9due GDPR 25 Maggio - script per attivare analytics, facebook ecc.. dopo il consenso. jQuery 14

Discussioni simili