Pagina 4 di 6 primaprima ... 2 3 4 5 6 ultimoultimo
Visualizzazione dei risultati da 31 a 40 su 52
  1. #31
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    nello script c'erano alcuni errori:
    • scrivevi inarray al posto di in_array in varie righe;
    • devi settare i valori delle option della select in maniera corretta se vuoi verificare che i subject siano quelli consentiti;
    • se nei subject consentiti metti anche il valore "", potrai ricevere valori vuoti (è una tua scelta);
    • avevi un errore nel controllo della dimensione del file (scrivevi "< 20000" in luogo di "> 200000") quindi ti scartava tutti i file piccoli (mi pare di capire che a te serva scartare i file troppo grandi);
    • sempre nel controllo della dimensione del file, avevi un refuso ("!$_FILES" invece che "$_FILES")


    Non ho verificato la parte che riguarda PHPMailer, non ho i file di configurazione a disposizione per testarlo

    Prova se ora funziona meglio, non scordare di modificare la select del form che riguarda i subject

    Codice PHP:
    <?php
        
    //caricamento librerie
        
    require_once("class.phpmailer.php");


        
    //impostazioni
        
    $attachmentpresent FALSE;
        
    $destinName "Paola & Alberto";
        
    $destinAddress "commerciale@lalegatoria.it";
        
    $smtpHost="lalegatoria.it";
        
    $smtpUsername="smtp@lalegatoria.it";
        
    $smtpPassword="Leogin02!";
        
    $allowedExts = array("jpeg""doc""pdf""zip""rar");
        
    $allowedSubjects = array("","legatoria","restauro","grafica","stampa","amministrazione","altro");
        
    $allowedMimes = array("image/jpeg","image/jpg","image/pjpeg","application/doc","application/docx","application/pdf","application/zip","application/rar");


        
    //ricezione dati dalla maschera
        
    $email $_POST['email'];
        
    $name $_POST['name'];
        
    $companyname $_POST['companyname'];
        
    $phone $_POST['phone'];
        
    $besttime $_POST['besttime'];
        
    $message$_POST['message'];


        
    //verifica scelta oggetto
        
    $subject="";
        if (!isset(
    $_POST['subject']) 


            
    // modifica il form mettendo i subject consentiyi nei value delle option della select al posto dei valori (0, 1, 2, ...)
            
    || !in_array($_POST['subject'],$allowedSubjects)) :


            
    // secondo me questo messaggio di errore non ha senso, tra i subject è previsto il vuoto
            
    die ("Non hai scelto l'oggetto del tuo messaggio. Torna indietro e correggi l'errore.");
        else:
            
    $subject $_POST['subject'];
        endif;


        
    //verifica dati della maschera
        //ho commentato queste linee perchè non includi nessun file esterno che definisca queste funzioni che chiami


        //strlencheck($name,0,60,"Hai indicato un nome troppo lungo, o non hai indicato un nome proprio. Torna indietro e correggi l'errore.");
        //strlencheck($companyname,0,60,"Hai indicato un nome aziendale troppo lungo, o non hai indicato un nome proprio. Torna indietro e correggi l'errore.");
        //checkphone($phone,0,"Hai indicato un numero di telefono improprio. Torna indietro e correggi l'errore.");


        
    if (!array_key_exists("attachment",$_FILES) || trim($_FILES["attachment"]["name"])==""):
            
    //nessun allegato caricato
        
    else:
            if (
    $_FILES["attachment"]["error"] > 0):
                
    //errore di upload, quindi non devo occuparmi del file uploadato
                
    echo "Errore di upload: " $_FILES["attachment"]["error"] . "<br>";
            else:
                if (
    file_exists("attachments/" $_FILES["attachment"]["name"])):
                    
    //il file esiste già
                    
    echo "Errore di upload, il file ".$_FILES["attachment"]["name"]." esiste già.";
                else:
                    
    $temp explode("."$_FILES["attachment"]["name"]);
                    
    $extension end($temp);
                    if (!
    in_array($_FILES["attachment"]["type"],$allowedMimes)


                        
    // qui avevi scritto "< 200000", ovviamente ogni file più piccolo veniva scartato
                        // in più avevi scritto "!$_FILES" che non significa nulla in questo contesto...
                        
    || ($_FILES["attachment"]["size"] > 200000)
                        || !
    in_array($extension$allowedExts) ):
                        echo 
    "Errore: il file allegato non è di un tipo permesso o è troppo grande.<br>";
                    else:
                        echo 
    "Nome file originario: " $_FILES["attachment"]["name"] . "<br>";
                          echo 
    "Mime type del file: " $_FILES["attachment"]["type"] . "<br>";
                          echo 
    "Dimensione del file: " . ($_FILES["attachment"]["size"] / 1024) . " Kb<br>";
                          echo 
    "File temporaneo: " $_FILES["attachment"]["tmp_name"];
                        if (
    move_uploaded_file($_FILES["attachment"]["tmp_name"],"attachments/" $_FILES["attachment"]["name"])):
                              echo 
    "File salvato in: " "attachments/" $_FILES["attachment"]["name"];
                            
    $attachmentpresent true;
                        else:
                              echo 
    "Errore spostando il file in: " "attachments/" $_FILES["attachment"]["name"];
                        endif;
                    endif;
                endif;
            endif;
        endif;


        
    $mail = new PHPMailer();


        
    //parametri server smtp
        
    $mail->IsSMTP();  // telling the class to use SMTP
        
    $mail->Host     $smtpHost// SMTP server
        
    $mail->SMTPDebug  1;                     // 0 for production use, 1 errors and messages, 2 messages only
        
    $mail->SMTPAuth   true;                  // enable SMTP authentication
        
    $mail->SMTPPort  25;                    // set the SMTP port for the GMAIL server
        
    $mail->Username   $smtpUsername// SMTP account username
        
    $mail->Password   $smtpPassword;        // SMTP account password


        //parametri messaggio email
        
    $mail->WordWrap 150;
        
    $mail->CharSet  'UTF-8';  // so it interprets foreign characters
        
    $mail->From $smtpUsername;
        
    $mail->ReplyTo $email;
        
    $mail->AddAddress($destinAddress$destinName);
        
    //se presente un allegato provo anche ad allegarlo alla email
        
    if ($attachmentpresent):
            
    $mail->AddAttachment("attachments/" $_FILES["attachment"]["name"]);      // attachment
        
    endif;


        
    //oggetto e corpo email
        
    $mail->Subject  "RICHIESTA PREVENTIVO DAL NS. SITO WEB";
        
    $mail->Body     .= "Abbiamo appena ricevuto una richiesta di preventivo da: ".$name."\n";
        
    $mail->Body     .= "Nome dell'azienda: ".$companyname."\n\n";
        
    $mail->Body     .= "Contattare al numero: ".$phone."\n";
        
    $mail->Body     .= "preferibilmente: ".$besttime."\n";
        
    $mail->Body     .= "oppure all'indirizzo email: ".$email."\n\n";
        
    $mail->Body     .= "Il messaggio ha per oggetto: ".$subject."\n";
        
    $mail->Body     .= "Testo del messaggio: ".$message."\n\n";
        
    //in ogni caso nella mail metto il link al file sul server
        
    if ($attachmentpresent):
            
    $mail->Body     .= "Il cliente ha inviato un allegato, che puoi scaricare da: http://www.lalegatoria.it/attachments/".$_FILES["attachment"]["name"]."\n\n";
        else:
            
    $mail->Body     .= "Il cliente non ha inviato un allegato.\n\n";
        endif;
        
    $mail->Body     .= "Non dimentichiamoci che la richiesta ha carattere di urgenza!";


        
    //invio email
        
    if(!$mail->Send()):
            
    //fallito
              
    echo 'Non è stato possibile inviare il Vs. messaggio.';
              echo 
    'Mailer error: ' $mail->ErrorInfo;
        else:
            
    //riuscito
              
    echo 'La Vs. email è stata inviata. Riceverete ns. riscontro a breve.';
            
    //decommenta questa linea per eliminare il file una volta speditolo correttamente come allegato
            //unlink("attachments/" . $_FILES["attachment"]["name"]);
        
    endif;
    ?>

  2. #32
    Utente di HTML.it
    Registrato dal
    Oct 2007
    residenza
    Trieste
    Messaggi
    831
    sembrava facile, ma non abbiamo ancora finito
    Ho corretto i refusi, modificato i valori delle option, ed i risultati sono i seguenti:
    1) qualsiasi grandezza di file, che sia inferiore o superiore a 200000, viene considerata un errore ("errore di upload" oppure "file/grandezza non previsti"), e lo script invia comunque una mail senza file con messaggio "non è stato allegato nessun file". Non sarà che va modificato il seguente echo "Dimensione del file: " . ($_FILES["attachment"]["size"] / 1024) . " Kb<br>"; ? Io ho bisogno che mi possa caricare qualsiasi grandezza, di quelle che normalmente possono essere per un immagine o un pdf doc.
    2) a parte il fatto che l'errore va corretto, ci mette troppo tempo ad elaborare l'errore stesso mentre secondo me dovrebbe riconoscere immediatamente una grandezza/tipo non previsti
    3) comprendo che il caricamento di un file prenda tempo, ma ho bisogno che l'utente abbia comunque un feedback immediato dell'invio della mail, anche se dietro le quinte l'upload sta ancora avvenendo. Io non ho mai visto una form che mi facesse attendere il caricamento del file... al massimo pochi secondi, mentre qui si parla di un paio di minuti (per poi magari ricevere un messaggio di errore)

  3. #33
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    1) mi pare molto strano, hai provato a caricare un file da 1kb? In ogni caso non c'è bisogno di modificare il pezzo che hai scritto in blu, quello è solo un modo per mostrare a schermo quello che è stato fatto;
    2/3) il fatto che ci metta molto tempo ad elaborare l'errore non lo capisco, sul mio PC ci mette pochissimo a restituire il risultato. L'immediatezza del controllo sul file da caricare credo che tu possa farla con javascript, ma al momento non saprei come;

    partiamo a bocce ferme: riposta tutto il codice che stai usando in questo momento, magari ti sei perso qualche correzione (non capisco perché fai le correzioni a mano e non un sano copia e incolla delle parti che servono).

  4. #34
    Utente di HTML.it
    Registrato dal
    Oct 2007
    residenza
    Trieste
    Messaggi
    831
    ...a bocce ferme, diciamo che faccio copiaincolla a pezzi, anche per per capire che tipo di modifiche sto facendo (sto imparando ancora PHP). Dunque il codice attuale è il seguente:
    Codice PHP:
    <?php 
    //impostazioni
    $attachmentpresent FALSE;
    $destinName "Paola & Alberto";
    $destinAddress "commerciale@lalegatoria.it";
    $smtpHost="lalegatoria.it";
    $smtpUsername="smtp@lalegatoria.it";
    $smtpPassword="Leogin02!";
    $allowedExts = array("jpeg""doc""pdf""zip""rar");
    $allowedSubjects = array("oggetto","legatoria","restauro","grafica","stampa","amministrazione","altro");
    $allowedMimes = array("image/jpeg","image/jpg","image/pjpeg","application/doc","application/docx","application/pdf","application/zip","application/rar");

    //ricezione dati dalla maschera            
    $email $_POST['email'];
    $name $_POST['name'];                    
    $companyname $_POST['companyname'];    
    $phone $_POST['phone'];                
    $besttime $_POST['besttime'];
    $subject="";
        if (!isset(
    $_POST['subject']) 
            || !
    in_array($_POST['subject'],$allowedSubjects)) :
            die (
    "Non hai scelto l'oggetto del tuo messaggio. Torna indietro e correggi l'errore.");
        else:
            
    $subject $_POST['subject'];
        endif; 
    $message$_POST['message'];


    /* --------- attachments settings ------ */
    $allowedExts = array("jpeg""jpg""doc""pdf""zip""rar");
    $allowedTypes = array("image/jpg""image/jpeg""application/doc""application/docx""application/pdf""application/zip""application/rar");
    if (!
    array_key_exists("attachment",$_FILES) || trim($_FILES["attachment"]["name"])==""):
    //nessun allegato caricato
    else:
        if (
    $_FILES["attachment"]["error"] > 0):
            
    //errore di upload, quindi non devo occuparmi del file uploadato
            
    echo "Errore di caricamento: " $_FILES["attachment"]["error"] . "<br>";
        else:
            if (
    file_exists("attachments/" $_FILES["attachment"]["name"])):
                
    //il file esiste già
                
    echo "Errore di caricamento, il file ".$_FILES["attachment"]["name"]." esiste già.";
            else:
                
    $temp explode("."$_FILES["attachment"]["name"]);
                
    $extension end($temp);
                if (!
    in_array($_FILES["attachment"]["type"],$allowedMimes)
                    || (
    $_FILES["attachment"]["size"] > 200000)
                    || !
    in_array($extension$allowedExts) ):
                    echo 
    "Errore: il file allegato non è di un tipo permesso o è troppo grande.<br>";
                else:
                    echo 
    "Nome file originario: " $_FILES["attachment"]["name"] . "<br>";
                    echo 
    "Mime type del file: " $_FILES["attachment"]["type"] . "<br>";
                    echo 
    "Dimensione del file: " . ($_FILES["attachment"]["size"] / 1024) . " Kb<br>";
                    echo 
    "File temporaneo: " $_FILES["attachment"]["tmp_name"];
                    if (
    move_uploaded_file($_FILES["attachment"]["tmp_name"],"attachments/" $_FILES["attachment"]["name"])):
                          echo 
    "<br>File salvato in: " "attachments/" $_FILES["attachment"]["name"];
                        
    $attachmentpresent true;
                    else:
                          echo 
    "Errore spostando il file in: " "attachments/" $_FILES["attachment"]["name"];
                    endif;
                endif;
            endif;
        endif;
    endif;

    /* ------------------  SMTP EMAIL SETTINGS ------------------------- */
    //caricamento librerie
    require_once("class.phpmailer.php");
    //include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded

    //parametri server smtp
    $mail = new PHPMailer();
    $mail->IsSMTP();      // telling the class to use SMTP
    $mail->Host         $smtpHost// SMTP server
    $mail->SMTPDebug      1;                    // 0 for production use, 1 errors and messages, 2 messages only
    $mail->SMTPAuth       true;                 // enable SMTP authentication
    $mail->SMTPPort      25;                   // set the SMTP port for the GMAIL server
    $mail->Username       $smtpUsername;         // SMTP account username
    $mail->Password       $smtpPassword;           // SMTP account password
    //parametri messaggio email
    $mail->WordWrap     150;
    $mail->CharSet      'UTF-8';  // so it interprets foreign characters
    $mail->From         $smtpUsername
    $mail->ReplyTo         $email;
    $mail->AddAddress($destinAddress$destinName);
    //se presente un allegato provo anche ad allegarlo alla email
    if ($attachmentpresent):
        
    $mail->AddAttachment("attachments/" $_FILES["attachment"]["name"]);      // attachment
    endif;    
    //oggetto e corpo email
    $mail->Subject      "RICHIESTA PREVENTIVO DAL NS. SITO WEB";
    $mail->Body         .= "Abbiamo appena ricevuto una richiesta di preventivo da: ".$name."\n";
    $mail->Body         .= "Nome dell'azienda: ".$companyname."\n\n";
    $mail->Body         .= "Contattare al numero: ".$phone."\n";
    $mail->Body         .= "preferibilmente: ".$besttime."\n";
    $mail->Body         .= "oppure all'indirizzo email: ".$email."\n\n";
    $mail->Body             .= "Il messaggio ha per oggetto: ".$subject."\n";
    $mail->Body         .= "Testo del messaggio: ".$message."\n\n";
    //in ogni caso nella mail metto il link al file sul server
    if ($attachmentpresent):
        
    $mail->Body     .= "Il cliente ha inviato un allegato, che puoi scaricare da: http://www.lalegatoria.it/attachments/".$_FILES["attachment"]["name"]."\n\n";
    else:
        
    $mail->Body     .= "Il cliente non ha inviato un allegato.\n\n";
    endif;
    $mail->Body         .= "Non dimentichiamoci che la richiesta ha carattere di urgenza!";
        
        
    //invio email
    if(!$mail->Send()):
        
    //fallito
          
    echo 'Non &#232 stato possibile inviare il Vs. messaggio.';
          echo 
    'Mailer error: ' $mail->ErrorInfo;
    else:
        
    //riuscito
          
    echo '<br>La Vs. email &#232 stata inviata. Riceverete ns. riscontro a breve.';
        
    //decommenta questa linea per eliminare il file una volta speditolo correttamente come allegato
        //unlink("attachments/" . $_FILES["attachment"]["name"]);
    endif;
    ?>
    La cosa strana è che ho provato a caricare diverse grandezze di file, da 1 a 2000, ma mi ha preso solo un file jpg di 16K. Altri jpg più piccoli o grandi li ha ignorati.

  5. #35
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    fai così, così puoi verificare a video quale controllo determina il messaggio di errore (nel senso che a seconda di cosa scrive, indaghi dove è il problema)

    Codice PHP:
    echo "Errore: il file allegato non è di un tipo permesso o è troppo grande.<br>"

    // cambialo con
    echo "Errore: il file allegato non è di un tipo permesso o è troppo grande.<br>"
    echo $_FILES["attachment"]["type"] . "<br /> ";
    echo 
    $_FILES["attachment"]["size"] . "<br /> ";
    echo 
    $extension

  6. #36
    Utente di HTML.it
    Registrato dal
    Oct 2007
    residenza
    Trieste
    Messaggi
    831
    così facendo mi dà nuovamente pagina bianca, senza nemmeno tentare un invio

  7. #37
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    scusa, mancava un punto e virgola
    Consiglio spassionato, abilita la visualizzazione di tutti gli errori a schermo quando sviluppi

    Codice PHP:
    echo "Errore: il file allegato non è di un tipo permesso o è troppo grande.<br>";
    echo 
    $_FILES["attachment"]["type"] . "<br /> ";
    echo 
    $_FILES["attachment"]["size"] . "<br /> ";
    echo 
    $extension

  8. #38
    Utente di HTML.it
    Registrato dal
    Oct 2007
    residenza
    Trieste
    Messaggi
    831
    il debugging è attivato.... ma questo script, di allegare file non ne vuole proprio sapere... e meno male che phpmailer è pubblicizzato come il migliore script

  9. #39
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    ehm... non ci capisco più quasi nulla...

    domanda secca: il file lo sta caricando sul tuo server?
    se si, analizziamo cosa succede dopo
    se no, che errore ti mostra a schermo?

  10. #40
    Utente di HTML.it
    Registrato dal
    Oct 2007
    residenza
    Trieste
    Messaggi
    831
    siamo in due a non capirci niente e ti ringrazio veramente per la pazienza...
    quell'unico file img di 16K lo carica sul server, nella cartella giusta, dandomi messaggio
    Nome file originario: website.jpg + Mime type del file: image/jpeg + Dimensione del file: 15.5009765625 Kb + File temporaneo: /tmp/phpgu6xZ2 + File salvato in: attachments/website.jpge
    se provo a sovrascriverlo mi dà "esiste già"... ma per tutti gli altri files non c'è verso. Secondo me lo script funziona e reagisce, ma è l'upload a non funzionare. Eppure il settaggio PHP sul mio server è ok.

    C'è pure un altra questione: se clicco nel link dell mail dell'uno file allegato, il risultato è un bel
    "The requested URL /attachments/website.jpg was not found on this server. Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request."
    Ultima modifica di stardom; 01-03-2014 a 21:55

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.