Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Inserimento allegato da inviare tramite mail (PHPMailer, lato server)

    Ciao a tutti,

    Innanzitutto, vi ringrazio in anticipo, le vostre discussioni mi hanno risolto migliaia di volte i problemi di programmazione!

    Devo fare una pagina HTML che gestisce una contact form e che invia mail, tramite PHPMailer lato server (requisito non cambiabile).
    Era tutto funzionante, prima dell'aggiunta della richiesta di dare la possibilità, agli utenti, di inserire degli allegati alla loro contact form...

    Sono molto arrugginito sulla programmazione web, quindi vi prego di perdonare grandi sviste!

    questa è la form che ho fatto su html (purificata da dati maggiormente aziendali):
    codice HTML:
     <form id = 'modulo' method='post' onsubmit='return false;' enctype="multipart/form-data"> <fieldset><!--<table border="0" cellspacing="5" cellpadding="5">--><!-- padding : top, right, bottom, left  style="padding:0em 0em 1em 0em;" -->
    <!-- TABELLA--><!-- riga dell'indirizzo mail--><div><span style="text-align:left; font-weight:bold; display:inline-block; width:150px !important;">Il tuo indirizzo e-mail</span><span style="text-align:left; font-weight:bold; display:inline-block; width:230px !important;"><input type="email" id = "email" size="30" maxlength="40" value=""></input></span><span id="notificaErroreMail" style = "display:inline-block; width:10px;"></span></div><p />
    <!-- riga dell'option list--><div><span style="text-align:left; font-weight:bold; display:inline-block; width:150px !important;"> Scegliere un'opzione per richiedere</span><span style="text-align:left; font-weight:bold; display:inline-block; width:230px !important;"><select id="categoria" onchange="popola(getSelected(categoria))"><option value="01">01</option><option value="02">02</option><option value="03">03</option></select></span></div><p />
    <!-- Riga del codice fiscale --><div id="codFiscaleSpan"><span style="text-align:left; font-weight:bold; display:inline-block; width:150px !important;">Codice Fiscale</span><span style = "display:inline-block; width:230px !important;"><input id="codFiscale" value = "Dato obbligatorio" onfocus="if (this.value == 'Dato obbligatorio') this.value = ''" onblur="if(this.value== '') this.value='Dato obbligatorio'"></input></span><span id="notificaErroreCF" style = "display:inline-block; width:10px;"></span></div><p />
    <!-- Riga del numero di documento --><div id="numDocumentoSpan"><span style="text-align:left; font-weight:bold; display:inline-block; width:150px !important;">Numero del documento</span><span style = "display:inline-block; width:230px !important;"><input id="numDocumento" value = "Dato obbligatorio" onfocus="if (this.value == 'Dato obbligatorio') this.value = ''" onblur="if(this.value== '') this.value='Dato obbligatorio'"></input></span><span id="notificaErroreNumDoc" style = "display:inline-block; width:10px;"></span></div><p />
    <!-- Riga dei dettagli della richiesta --><div><span style = "vertical-align: top; text-align:left; font-weight:bold; display:inline-block; width:150px !important;">Dettagli della tua richiesta</span><span style = "display:inline-block; width:230px !important;"><textarea id="richiesta" rows="5" cols="25"></textarea></span><span id="notificaErroreRichiesta" style = "vertical-align: top; display:inline-block; width:10px;"></span></div><p />
    <!-- Riga degli allegati --><div><span style = "vertical-align: top; text-align:left; font-weight:bold; display:inline-block; width:150px !important;">Allega file:</span><span style = "display:inline-block; width:230px !important;"><input type="file" id="allegato" name="allegato" /></span></div><p />
    <!-- Riga dei bottoni --><div style="text-align:center;"><input name="submit" type="submit" class="button" id="submit" value="Invia" onclick = "checkcompilazione(getSelected(categoria))"></input><input name="cancella" type="reset" class="button" value="Cancella" /></div><p /> <p><div id="notificaErrore"></div> </p><!-- FINE TABELLA -->
    </fieldset></form>
    all'invio della submit, richiamo alcune funzioni javascript, che fanno dei controlli e, in caso di errori, fanno comparire dei div di segnalazione errore.

    Se non ci sono errori, richiamo la seguente funzione javascript in questo modo:
    codice:
    post_to_url('elabora_mail_contatti.php', { 'email':document.getElementById('email').value,'categoria':document.getElementById('categoria').value,'richiesta':document.getElementById('richiesta').value, 'allegato':document.getElementById('allegato').value}, 'post');
    qui, la funzione javascript che crea la form da inviare
    codice:
    	
    function post_to_url(path, params, method) {    method = method || "post"; // Set method to post by default if not specified.
    
    
        var form = document.createElement("form");
        form.setAttribute("method", method);
        form.setAttribute("action", path);
    
    
        for(var key in params) {
            if(params.hasOwnProperty(key)) {
                var hiddenField = document.createElement("input");
                hiddenField.setAttribute("type", "hidden");
                hiddenField.setAttribute("name", key);
                hiddenField.setAttribute("value", params[key]);
    		
                form.appendChild(hiddenField);
             }
        }
    	form.enctype = "multipart/form-data";
        document.body.appendChild(form);
        form.submit();
    }
    MA, quando da PHP provo a vedere il contenuto di $_FILES['allegato'] mi dà "Could not access file", e se provo a stampare il $_POST['allegato'] mi dà un "C:\fakepath\nomefile"

    Credo di sbagliare nella form, per il submit dell'allegato, ma non riesco a capire dove, per caso qualcuno di voi può aiutarmi? Grazie mille e scusate per il disturbo!

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Per allegare un file devi prima uplodarlo (scaricarlo) sul server poi allegarlo per l'invio è impossibile allegare un file presente sul pc del utente, in tutta la procedura il javascript è marginale devi eseguire l'operazione lato server col php
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Quote Originariamente inviata da cavicchiandrea Visualizza il messaggio
    Per allegare un file devi prima uplodarlo (scaricarlo) sul server poi allegarlo per l'invio è impossibile allegare un file presente sul pc del utente, in tutta la procedura il javascript è marginale devi eseguire l'operazione lato server col php
    Grazie Andrea, per la risposta così veloce!

    Posso chiederti un consiglio, dato che su Php sono zoppicante? Cosa devo passare, da javascript a php per poter effettuare l'upload del file con php?

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ci sono script già pronti cerca in rete, ma se non hai dimestichezza con la programmazione lascia perdere
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Quote Originariamente inviata da cavicchiandrea Visualizza il messaggio
    Ci sono script già pronti cerca in rete, ma se non hai dimestichezza con la programmazione lascia perdere
    la dimistichezza con la programmazione ce l'ho, grazie.

    Il mio problema è che la $_FILES che vado a richiamare nel php, è vuota. Questo succede spesso (dopo accurate ricerche in rete) quando la form non ha, come tag:

    enctype="multipart/form-data"

    il mio problema, è che la form che sottometto, la creo con javascript, e ho provato i seguenti modi (tutti trovati in rete):
    document.forms[0].encoding = "multipart/form-data";
    form.enctype = "multipart/form-data";
    form.encoding = 'multipart/form-data';
    form.setAttribute( "enctype", "multipart/form-data" );
    form.setAttribute( "encoding", "multipart/form-data" );

    ma con lo stesso risultato: $_FILES vuota, con vardump NULL.

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    codice:
    var MyForm = document.createElement("form"); 
        MyForm.method = method; 
        MyForm.action = path;
    MyForm.enctype = "multipart/form-data";
     
        for(var key in params) { 
            if(params.hasOwnProperty(key)) { 
                var hiddenField = document.createElement("input"); 
                hiddenField.type = "hidden"; 
                hiddenField.name = key; 
                hiddenField.value = params[key]; 
             
                MyForm.appendChild(hiddenField); 
             } 
        }    
        document.body.appendChild(MyForm); 
        MyForm.submit();
    }
    Ho cambiato la variabile form che è una parola riservata e ho impostato gli attributi direttamente (più compatibile con le varie versioni dei browser)
    Se non funziona abbandonerei il dom e inserirei il form (in html) in un div con display:none che mostreri all'occorenza
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

Tag per questa discussione

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.