Pagina 3 di 6 primaprima 1 2 3 4 5 ... ultimoultimo
Visualizzazione dei risultati da 21 a 30 su 52

Hybrid View

  1. #1
    else {
    echo "Invalid file: *".$_FILES["file"]["type"]."* *".$_FILES["file"]["size"]."*";
    }


    Così puoi renderti conto di cosa arriva al tuo if.
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2007
    residenza
    Trieste
    Messaggi
    831
    Qui non sta funzionando niente. L'istruzione che mi dici non dà nessun messggio differente da quelli precedenti, e niente viene caricato sul server. Questo script funziona benissimo senza file, ma quando vado ad allegare un file non sa proprio distinguere il bianco dal nero. Ma con tutto questo proliferare di tutorial, non esiste un modo semplice per far caricare un file ed inviare un link nella mail che ricevo? Io non lo trovo. E poi mi sono imbattuto in form che caricano il file in un secondo, non è detto che debbano impiegare molto.
    Ultima modifica di stardom; 25-02-2014 a 22:28

  3. #3
    No: il tempo in cui un form carica un file è strettamente funzione della dimensione in kb del file e della velocità della tua connessione ad internet. NON esistono form in grado ci caricare più velocemente, semplicemente perchè la velocità non dipende da come è fatta la form.

    Detto questo, qualcosa verrà scritto!

    Anzi, ti dirò: ho appena provato ed ha funzionato tutto:

    Upload: cod1.jpeg
    Type: image/jpeg
    Size: 11.478515625 Kb
    Stored in: /tmp/php0vnxOY
    Stored in: attachments/cod1.jpeg
    La Vs. email è stata inviata. Riceverete ns. riscontro a breve.

    Quindi cos'è che non funziona?
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2007
    residenza
    Trieste
    Messaggi
    831
    Sai cos'è che non funziona? Ci mette un sacco di tempo per caricare una jpg di 20k; e poi, nella mail che ricevo, il link del download è interrotto, nel senso che se per esempio ho un file che si chiama nome_cognome.jpg (o doc, o pdf, etc) il link si interrompe nell'undescore "nome_". E poi c0'è il fatto che non carica niente sulla cartella.
    In altre parole, si ha un messaggio di "email inviata", ed un link nella mail, ma nella cartella non c'è niente.
    Poi vorrei che la dicitura "il cliente ha allegato un file" compaia nella mail solo se effettivamente è stato inviato un file. Se no, la dicitura dovrebbe non apparire.

  5. #5
    Beh, sul fatto che il link sia sbagliato, per forza, devi usare il path definitivo in cui sposti il file come url che inserisci nella mail, altrimenti non funzionerà mai:

    "http://ww.tuosito.it/attachments/" . $_FILES["attachment"]["name"]


    Ma scusami, il file cod1.jpeg che ti ho caricato io c'è nella cartella attachments?

    Quanto al fatto di mettere il messaggio dell'allegato solo se l'allegato c'è, ti basterà un if:

    if (trim($_FILES["file"]["name"])!=""):

    Allora metti il messaggio.
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2007
    residenza
    Trieste
    Messaggi
    831
    Shores, Il tuo file cod1.jpeg stava sulla cartella, e pur essendo il link corretto, non so perchè nessuno dei miei file va nella cartella.
    Ho anche inserito il tuo codicillo per l'allegato non presente, ma non funziona. A questo punto io risposto il mio codice, in modo che possiate analizzarlo nel dettaglio...

    Codice PHP:
    /* ------------------  ATTACHMENTS SETTINGS ------------------------- */
    $allowedExts = array("jpeg""jpg""doc""pdf""zip""rar");
    $allowedTypes = array("image/jpg""image/jpeg""image/pjpeg""application/doc""application/docx""application/pdf""application/zip""application/rar");
    $temp explode("."$_FILES["attachment"]["name"]);
    $extension end($temp);
    if (
    in_array($_FILES["attachment"]["type"], $allowedTypes
    && (
    $_FILES["attachment"]["size"] < 20000000
    && 
    in_array($extension$allowedExts)) 
    {
        if (
    $_FILES["attachment"]["error"] > 0) {
            echo 
    "Error: " $_FILES["attachment"]["error"] . "<br>";
        }
        else {
            echo 
    "Upload: " $_FILES["attachment"]["name"] . "<br>";
            echo 
    "Type: " $_FILES["attachment"]["type"] . "<br>";
            echo 
    "Size: " . ($_FILES["attachment"]["size"] / 1024) . " Kb<br>";
            echo 
    "Stored in: " $_FILES["attachment"]["tmp_name"] . "<br />";
        }
        if (
    file_exists("attachments/" $_FILES["attachment"]["name"])) {
            echo 
    $_FILES["attachment"]["name"] . " already exists. <br />";
        }
        else {
            
    move_uploaded_file($_FILES["attachment"]["tmp_name"], "attachments/" $_FILES["attachment"]["name"]);
            echo 
    "Stored in: " "attachments/" $_FILES["attachment"]["name"] ."<br />";
        }
    }
    if (
    trim($_FILES["file"]["name"])!="non è stato allegato nessun file");

    /* ------------------  SMTP EMAIL SETTINGS ------------------------- */
    require_once("class.phpmailer.php");
    //include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded
    $mail = new PHPMailer();
    $mail->IsSMTP();  // telling the class to use SMTP
    $mail->Host     "lalegatoria.it"// SMTP server
    // $mail->SMTPDebug  = 2;                     // 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   "smtp@lalegatoria.it"// SMTP account username
    $mail->Password   "Leogin02!";        // SMTP account password
    $mail->CharSet  'UTF-8';  // so it interprets foreign characters
    $mail->From $mail->Username
    $mail->AddAddress("commerciale@lalegatoria.it""Paola & Alberto");
    $mail->AddAttachment($attachments);      // attachment
    $mail->Subject  "RICHIESTA PREVENTIVO DAL NS. SITO WEB";
    $mail->Body     .= "Abbiamo appena ricevuto una richiesta di preventivo da: ".$_POST['name']."\n";
    $mail->Body     .= "Nome dell'azienda: ".$_POST['companyname']."\n\n";
    $mail->Body     .= "Contattare al numero: ".$_POST['phone']."\n";
    $mail->Body     .= "preferibilmente: ".$_POST['besttime']."\n";
    $mail->Body     .= "oppure all'indirizzo email: ".$_POST['email']."\n\n";
    $mail->Body     .= "Il messaggio ha per oggetto: ".$subject."\n";
    $mail->Body     .= "Testo del messaggio: ".$_POST['message']."\n\n";
    $linkAlFile      =  $_FILES["attachment"]["name"];
    $mail->Body     .= "Il cliente ha inviato un allegato, che puoi scaricare da:  http://www.lalegatoria.it/contact/attachments/".$linkAlFile."\n\n"
    // $mail->Body     .= "Il cliente ha inviato un allegato, che puoi scaricare da: ".$_POST['file']."\n\n";
    $mail->Body     .= "Non dimentichiamoci che la richiesta ha carattere di urgenza!";
    $redirect_url "http://www.lalegatoria.it";
    $mail->WordWrap 150;

    if(!
    $mail->Send()) {
      echo 
    'Non è stato possibile inviare il Vs. messaggio.';
      echo 
    'Mailer error: ' $mail->ErrorInfo;
      exit;

    else {
      echo 
    'La Vs. email &#232 stata inviata. Riceverete ns. riscontro a breve.';
    }
    header("Location: $redirect_url"); 

  7. #7
    Mi sa che qui veramente ci perdiamo in un bicchiere d'acqua, al punto di non sapere dove mettere un if quando ti viene detto esplicitamente dove metterlo...

    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 (
    $subjectindex == || !isset($_POST['subject']) || !inarray($_POST['subject'],$allowedSubjects)):
            die (
    "Non hai scelto l'oggetto del tuo messaggio. Torna indietro e correggi l'errore.");
        else:
            
    $subject $allowedSubjects[$_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)):
            
    //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 (!
    inarray($_FILES["attachment"]["type"],$allowedmimes)
                        || (!
    $_FILES["attachment"]["size"] < 20000)
                        || !
    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";
        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;
    ?>
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2007
    residenza
    Trieste
    Messaggi
    831
    mi sa che il bicchiere d'acqua va giù solo a te... a me continua a dare errore o a non fare nulla. Ho modificato correttamente il file come da tue indicazioni, ma:
    1) che io metta o meno l'oggetto della mail, mi dice sempre "non hai scelto l'oggetto"
    2) se dunque sostituisco il tuo codice
    Codice PHP:
    $subject ="";
    if  (
    $subjectindex == || !isset($_POST['subject']) ||  !inarray($_POST['subject'],$allowedSubjects)): die ("Non hai scelto  l'oggetto del tuo messaggio. Torna indietro e correggi l'errore.");
    else:    
    $subject $allowedSubjects[$_POST['subject']];
    endif; 
    con il mio
    Codice PHP:
    $subject = array(); 
        
    $subject[1] = legatoria;
        
    $subject[2] = restauro;
        
    $subject[3] = grafica;
        
    $subject[4] = stampa;
        
    $subject[5] = amministrazione;
        
    $subject[6] = altro;
        
    $subjectindex $_REQUEST['subject'];
         if (
    $subjectindex == || !isset($_POST['subject'])) die ("Non hai  scelto l'oggetto del tuo messaggio. Torna indietro e correggi  l'errore.");
        else 
    $subject $allowedSubjects[$_POST['subject']]; 
    a) la mail viene inviata, però con dicitura "errore di caricamento" se non allego il file, oppure
    b) non viene inviata e non mi dà nessun errore se allego il file

    3) con entrambi i codici di riferimento dell'oggetto email, nessun file viene caricato sul server e quindi nella mail non ricevo nessun messaggio di allegato (che preferirei comunque avere, "non è stato allegato nessun file", piuttosto che nessun messaggio: ovvero l'istruzione if (trim($_FILES["file"]["name"])!="non è stato allegato nessun file"); che mi avevi indicato)

  9. #9
    Ho corretto due piccoli refusi:

    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']) || !inarray($_POST['subject'],$allowedSubjects)):
            die (
    "Non hai scelto l'oggetto del tuo messaggio. Torna indietro e correggi l'errore.");
        else:
            
    $subject $allowedSubjects[$_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 (!
    inarray($_FILES["attachment"]["type"],$allowedmimes)
                        || (!
    $_FILES["attachment"]["size"] < 20000)
                        || !
    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;
    ?>
    Ma a questo punto, sei sicuro che il tuo server abbia attivi gli upload di file, e/o non abbia un limite troppo basso di kb permessi?
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2007
    residenza
    Trieste
    Messaggi
    831
    Nel ringraziarti per la pazienza, ti confermo che l'upload dei file è attivo sul mio server per max 2M.
    La mail viene inviata solo se utilizzo il mio codice per il $subject array mentre con il tuo non funziona (non so perchè), ma sempre senza file allegato. Se provo ad allegare un file mi va in una pagina blank e la mail non è inviata. Persistono dunque i punti a) e b) come indicavo.

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.