Benvenuto nella nostra community, registra un account gratuito ADESSO!
Oltre 7000 persone hanno già registrato il loro account. Chiedi aiuto, conversa con aziende ed esperti del settore webhosting italiano.
Iscriviti subito! In meno di 2 minuti!




Risultati da 1 a 9 di 9
  1. #1
    HT Member
    Data Registrazione
    Sep 2006
    Località
    Repubblica della Serenissima (Venezia)
    Messaggi
    48

    Script formmail con allegato funzionante solo su altervista

    Ciao a tutti, ho un piccolo problema con uno script in php per mandare email con un allegato.
    Su altervista la cosa funziona, mi arrivano gli allegati integri, mentre, con il nuovo hosting mi arrivano allegati danneggiati, ovvero che pesano 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



  2. #2
    HTastinator L'avatar di barh.it
    Data Registrazione
    Mar 2006
    Messaggi
    389

    Re: Script formmail con allegato funzionante solo su altervista

    prova a togliere gli @ dal codice così vedi se compaiono degli errori!
    La Community wap che spaKKa!

  3. #3
    HT Member
    Data Registrazione
    Sep 2006
    Località
    Repubblica della Serenissima (Venezia)
    Messaggi
    48

    Re: Script formmail con allegato funzionante solo su altervista

    Non è successo niente.
    Continua a mandarmi gli allegati da 0kb...

  4. #4
    HTastinator L'avatar di barh.it
    Data Registrazione
    Mar 2006
    Messaggi
    389

    Re: Script formmail con allegato funzionante solo su altervista

    boh.. allora potrebbe essere altrove l'inghippo (hai postato tutto il codice?) magari nella configurazione dei server dell'hosting... è capitato anche a me che passando da un hosting all'altro alcune cose che prima andavano,dopo non andavano + e mi son dovuto scervellare x capire dove.. (nel mio caso una versione diversa di php)
    La Community wap che spaKKa!

  5. #5
    HT Member
    Data Registrazione
    Sep 2006
    Località
    Repubblica della Serenissima (Venezia)
    Messaggi
    48

    Re: Script formmail con allegato funzionante solo su altervista

    Si il codice sostanzialmente è tutto.
    Mancano due o tre cazzatine, che di sicuro non c'entrano con l'invio dell'allegato.
    Dici che possa essere una diversa configurazione del server nuovo?
    Effettivamente non c'ho pensato... solo che mi scoccia aprire un ticket per un problema del genere..

    Grazie per l'aiuto

  6. #6
    HTastinator L'avatar di barh.it
    Data Registrazione
    Mar 2006
    Messaggi
    389

    Re: Script formmail con allegato funzionante solo su altervista

    se su altervista funziona,a livello di codice è tutto apposto.. tuttavia ci sono alcune sottili differenze se la versione di php è diversa o peggio,se la config del server è differente (in questo caso non ci puoi far nulla mi sa)

    magari se risolvi,scrivilo che sono curioso di sapere cos'era
    La Community wap che spaKKa!

  7. #7
    HT Member
    Data Registrazione
    Sep 2006
    Località
    Repubblica della Serenissima (Venezia)
    Messaggi
    48

    Re: Script formmail con allegato funzionante solo su altervista

    Spero di venirne a capo presto.
    Ho già postato sul forum del mio hoster, magari salta fuori una soluzione

  8. #8
    HT Member
    Data Registrazione
    Sep 2006
    Località
    Repubblica della Serenissima (Venezia)
    Messaggi
    48

    Re: Script formmail con allegato funzionante solo su altervista

    Cambio genere di richiesta
    Qualcuno mi può suggerire un buon script per inviare mail che abbia:

    - controllo dei campi
    - controllo validità indirizzo email
    - possibilità allegare 1 file
    - possibilità di mettere un limite alla grandezza dell'allegato
    - possibilità di autorizzare l'invio di file con determinate estensioni

    ah il tutto di facile configurazione

    Spero di non chiedere la luna

  9. #9
    Utente Moderatore L'avatar di Alex
    Data Registrazione
    Aug 2006
    Messaggi
    2,365

    Re: Script formmail con allegato funzionante solo su altervista


Discussioni Simili

  1. INVIARE EMAIL PHP CON ALLEGATO
    Di sfh-hosting nel forum PHP
    Risposte: 3
    Ultimo Messaggio: 27-02-2011, 18:32
  2. Risposte: 19
    Ultimo Messaggio: 31-08-2010, 00:25
  3. Altervista
    Di TheDarkITA nel forum Free WebHosting
    Risposte: 5
    Ultimo Messaggio: 30-06-2008, 15:22
  4. le novità di altervista....
    Di freehostingman nel forum Free WebHosting
    Risposte: 33
    Ultimo Messaggio: 25-03-2008, 19:59
  5. menemat.altervista.org
    Di mene nel forum Il tuo sito
    Risposte: 5
    Ultimo Messaggio: 26-07-2006, 10:21

Informazioni Discussione

Utenti che Stanno Visualizzando Questa Discussione

Ci sono attualmente 1 utenti che stanno visualizzando questa discussione. (0 utenti e 1 ospiti)

Tag per Questa Discussione

Segnalibri

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •