+ Rispondi alla Discussione
Pagina 1 di 2 12 UltimaUltima
Risultati da 1 a 15 di 16

Allegato in un form non arriva...

Ultimo Messaggio di devilmark84 il:
  1. #1
    User
    Data Registrazione
    Apr 2012
    Località
    Ferrara
    Messaggi
    11

    Allegato in un form non arriva...

    Ciao a tutti come da oggetto ho questo problema...In un form creato in html con invio in PHP non riesco a far pervenire i messaggi inviati con l'allegato...Per semplificare la cosa ne approfitto per inserire il codice che ho sul form che ho impostato...Ci sono le classiche voci nome, telefono, email, richiesta, allegato e spunta per la privacy obbligatorie (tranne l'allegato) facendo delle prove i messaggi arrivano ma non arriva l'allegato e appena viene spedita la richiesta si apre una pagina del browser con questo errore:

    Warning: move_uploaded_file(attachments/) [function.move-uploaded-file]: failed to open stream: No such file or directory in D:\Inetpub\webs\miositocom\invia.php on line 11

    Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\PHP\upload\php2D81.tmp' to 'attachments/' in D:\Inetpub\webs\miositocom\invia.php on line 11
    Email inoltrata correttamente

    Premetto che non sono un programmatore e sono arrivato a fare questo form in un maniera roccambolesca e ne sono orgoglioso perche' alla fine cercando un po' ovunque in rete sono riuscito ad arrivare quasi all'epilogo della storia infatti mi manca solo da risolvere questo intoppo e sarebbe veramente frustrante essere arrivati alla fine e poi dover rinunciare per una cosa del genere per cui confido in qualcuno che possa darmi un aiuto a riguardo...

    Grazie a tutti per l'attenzione.

    Codice:
    <?php
    //Percorso dove raccoglieremo gli allegati
    $path = "attachments/";
    //Nome e Cognome
    $name = $_POST['name'];
    $surname = $_POST['surname'];
    $phone = $_POST['phone'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    //Upload dell'allegato
    move_uploaded_file($_FILES['attachment']['tmp_name'], $path.$_FILES['attachment']['name']);
    //Messaggio
    $subject = "Questa Email contiene un allegato";
    $bodymail = "Name: ".$name." <br />
    			  Surname: ".$surname." <br />
    			  Phone: ".$phone." <br />
    			  Email: ".$email." <br />
    			  Message: <br /> ".$message." <br />";
    //Inclusione della libreria
    require_once("phpmailer/class.phpmailer.php");
    //Creiamo un oggetto PHPMailer e ne settiamo le variabili
    $mail = new PHPMailer();
    $mail->From = $email;
    $mail->FromName = $name." ".$surname;
    $mail->AddAddress("mia@mail.it");
    $mail->IsHTML(true); 
    $mail->Subject = $subject;
    $mail->Body = $bodymail;
    if($mail->AddAttachment($path.$_FILES['attachment']['name'])){
    	//Inviamo l'email
    	if($mail->Send()){
    		echo "Email inoltrata correttamente";		
    	}else{
    		echo "Errore invio mail";
    	}
    }else{
    	echo "Errore allegato";
    }
    ?>

  2. #2
    ModSenior L'avatar di marcocarrieri
    Data Registrazione
    Jul 2009
    Località
    Rovigo
    Messaggi
    15,597
    Potresti magari fare una sorta di file exist prima di fare l'attach?
    Cioè farti scrivere magari nel body se il file esiste o meno e il relativo percorso, in questo modo sai se magari manca una barra, se il percorso è corretto o meno.

  3. #3
    User
    Data Registrazione
    Apr 2012
    Località
    Ferrara
    Messaggi
    11
    Purtroppo non ti seguo...io vorrei solo capire perche' non parte l'allegato...cosa c'e' di sbagliato nel codice che ho messo? e a cosa e' dovuto l'errore che ho postato a inizio pagina?...Se puo' servire posso mettere il codice html per generare il form cosi se qualcuno vorra' potra' copiare il codice in Dreamweaver (o dove vuole) e potra' testare da solo il risultato...Grazie...

  4. #4
    Utente Premium L'avatar di tigrone
    Data Registrazione
    Oct 2009
    Località
    Garlasco... non sono stato io!!!!
    Messaggi
    435
    Citazione Originariamente Scritto da MZW72 Visualizza Messaggio
    Purtroppo non ti seguo...
    Marco ti sta dicendo di fare un debug...

    Codice:
    Warning: move_uploaded_file(attachments/) [function.move-uploaded-file]: failed to open stream: No such file or directory in D:\Inetpub\webs\miositocom\invia.php on line 11
    Php ti sta dicendo che non trova il file o la cartella che lo dovrebbe contenere.
    Come fa ad inviare un file che non trova neanche?
    Tanto per cominciare: c'è una cartella di nome "attachments"?

  5. #5
    User
    Data Registrazione
    Apr 2012
    Località
    Ferrara
    Messaggi
    11
    La cartella attachments/ c'e' ed e' nella stessa posizione dove ci sono i file che completano il form ovvero il file html intitolato FORM il file delle proprieta' php che ho nominato invio.php poi ho una cartella nominata phpmailer e all'interno un file php richiesto dal form col nome class.phpmailer.php...tutto questo posizionato per prova su un server windows di aruba cosi' provo in tempo reale come si comporta il form per cui non uso server remoti tipo Apache o IIS....Ora quella cartella attachments/ dove deve stare di preciso? va bene come l'ho messa io oppure non e' nel posto giusto....quella directory (D:\Inetpub\webs\miositocom\invia.php) da dove sbuca....io questo sistema di spedizione form l'ho recuperato in rete non e' fatto da me per cui potrebbe avere impostazioni che devo solo adattare alle mie esigenze...per cui ripeto....il form funziona perfettamente l'unica cosa che gli allegati se li prendo dalla cartella documenti ad esempio non arrivano mentre se li prendo nella cartella attachments/ l'allegato arriva....Cioe' non me ne faccio una ragione del perche' succede questo

  6. #6
    Utente Premium L'avatar di tigrone
    Data Registrazione
    Oct 2009
    Località
    Garlasco... non sono stato io!!!!
    Messaggi
    435
    Citazione Originariamente Scritto da MZW72 Visualizza Messaggio
    se li prendo dalla cartella documenti ad esempio non arrivano mentre se li prendo nella cartella attachments/ l'allegato arriva
    Spiegati meglio... in che senso li prendi nella cartella attachments?

  7. #7
    User
    Data Registrazione
    Apr 2012
    Località
    Ferrara
    Messaggi
    11
    E' proprio questa la parte paradossale della storia....di seguito metto un'immagine che non e' altro che lo screenshot della cartella contenente i file del mio form e quella che vedi e' posizionata sul mio computer...ovviamente gli stessi file sono messi tramite FTP nel mio spazio web (non essendo utente premium non posso inserire ne link ne immagini per cui spero tu capisco cio' che sto scrivendo).....ora se io apro il form col browser (io uso safari principalmente) e compilo il form e lo invio senza mettere alcun allegato il form me lo trovo compilato nella mail correttamente...se lo compilo e metto un allegato che ho prelevato dalla cartella documenti...mi esce l'errore che ho messo nel primo post solo che il messaggio arriva comunque ma ovviamente senza allegato....Ora viene il bello se io compilo il form e vado per mettere l'allegato mi apre la schermata dove poterlo scegliere l'allegato giusto??? Ecco...io vado nella cartella attachments dove ho messo dei file di prova (ricordo che i file che vado a prendere li prendo dalla cartella che ho posizionato sul desktop (provvisoriamente per fare delle prove) ma la cartella attacments potrei averla messa ovunque sta di fatto che io pesco il file da li dentro lo allego al form e questo arriva....morale della favola tutto quello che allego e lo pesco dalla cartella attachments che ho sul mio pc arriva senza problemi...se pesco un file che ho nella cartella (documenti) oppure (miacartella) oppure (immagini) non arriva....e' questo che mi sballa....che senso ha che i file che prendo in quella cartella partono mentre quelli che prendo da altri no? spero di essere stato un po' piu' chiaro.

  8. #8
    User
    Data Registrazione
    Aug 2011
    Località
    Faenza
    Messaggi
    85
    Ciao,
    per me il problema sta solo nella terza riga e per la soluzione vado un po' a tentativi (so che non è molto professionale ):

    $path = "attachments//";
    $path = "attachments\\";
    $path = "./attachments/";
    $path = "./attachments//";

  9. #9
    User
    Data Registrazione
    Feb 2012
    Località
    napoli
    Messaggi
    48
    Prova a modificare il path cosi:

    Codice PHP:
    $path "/attachments/"

  10. #10
    User
    Data Registrazione
    Apr 2012
    Località
    Ferrara
    Messaggi
    11
    no, niente da fare....mi tocca arrendermi purtroppo....capisco che e' troppo complesso a distanza poter sistemare cose del genere...Grazie a tutti per il tempo dedicato.

  11. #11
    User
    Data Registrazione
    Aug 2011
    Località
    Faenza
    Messaggi
    85
    Non arrenderti!
    Tenta questo per l'upload del file:
    Codice PHP:
    move_uploaded_file($_FILES['attachment']['tmp_name'], basename($path.$_FILES['attachment']['name'])); 
    <edit>
    Mi sono ricordato di aver fatto degli upload temporanei di file (per poi cancellarli dopo averli processati), ed il codice funziona tutt'ora.
    Lo posto di seguito sperando che possa aiutarti
    Codice PHP:
    /********************************************************************************************/
    /* Upload del file 
    /********************************************************************************************/
    $cartella_upload "./";
    if(!isset(
    $_FILES['file_allarmi']) || $_FILES['file_allarmi']['size']==0){
        echo 
    "Nessun file selezionato per l'upload</br>";
    }else{
        
    $nome_file=$_FILES['file_allarmi']['name'];
        
    $errore="";    
        if(!
    file_exists($cartella_upload)){
            
    $errore.="La cartella di destinazione non esiste</br>";
        }
        if(
    $errore==""){
            if(
    move_uploaded_file($_FILES['file_allarmi']['tmp_name'], $cartella_upload.$_FILES['file_allarmi']['name'])){
                
    chmod($cartella_upload.$_FILES['file_allarmi']['name'],0777); //permessi per poterci sovrascrivere/scaricare
                
    echo "Operazione eseguita con successo. Upload riuscito. Caricato il file ".$nome_file."</br><br>" ;
            }else{
                echo 
    "Impossibile effettuare l'upload del file</br><br>";
            }
        }else{
            echo 
    $errore;
        }

    </edit>
    Ultima modifica di Cyrus; 08-05-12 alle 20:48 Motivo: editato

  12. #12
    User
    Data Registrazione
    Apr 2012
    Località
    Ferrara
    Messaggi
    11
    grazie per l'incoraggiamento ma e' frustrante....ehehehehe....comunque anche questa soluzione non funziona e questo e' quello che mi esce appena invio...

    Warning: move_uploaded_file(mark.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in D:\inetpub\webs\mzwit\form\invia.php on line 10

    Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\PHP\upload\phpA900.tmp' to 'mark.jpg' in D:\inetpub\webs\mzwit\form\invia.php on line 10
    Email inoltrata correttamente

    Il messaggio arriva ma senza allegato...non capisco per cosa sta quel permesso negato e non capisco soprattutto cosa sia quella directory assurda che mi da errore....da dove proviene? e' qualcosa che fa parte del server dove e' appoggiato il mio sito?perche' io non ho ne C: e ne D: dato che uso un mac per cui quella directory deve far parte di qualcosa inerente al server suppongo...(sono appoggiato ad aruba se puo' essere utile)....e premetto che con altro codice in php trovato in altro forum riesco a mandare gli allegati ma con la pecca di non poter convalidare i campi obbligatori mentre in questo form si...in poche parole devo scendere a compromessi o questo ma eliminando il campo attachment oppure l'altro...

  13. #13
    ModSenior L'avatar di Thedarkita
    Data Registrazione
    Aug 2006
    Località
    Messina
    Messaggi
    7,002
    Segui Thedarkita su Twitter Aggiungi Thedarkita su Google+ Aggiungi Thedarkita su Facebook Aggiungi Thedarkita su Linkedin Visita il canale Youtube di Thedarkita
    Se le cose non sono cambiate, è normale dia errore in quanto Aruba concede i permessi in scrittura solo in determinate cartelle (Ad esempio public) perciò la copia in quella cartella genera errore per mancanza di permessi.

  14. #14
    User
    Data Registrazione
    Apr 2012
    Località
    Ferrara
    Messaggi
    11
    Allora la cartella attachments/ dovrei metterla nella cartella public e dare la directory giusta? tipo cosi'?
    Codice PHP:
    <?php
    //Percorso dove raccoglieremo gli allegati
    $path "public/attachments/";
    insomma una cosa del genere?

  15. #15
    ModSenior L'avatar di Thedarkita
    Data Registrazione
    Aug 2006
    Località
    Messina
    Messaggi
    7,002
    Segui Thedarkita su Twitter Aggiungi Thedarkita su Google+ Aggiungi Thedarkita su Facebook Aggiungi Thedarkita su Linkedin Visita il canale Youtube di Thedarkita
    Dipende dove si trova lo script, devi considerare che il path corretto inizia da li, per cui se è il caso dovrai inserire il numero corretto di ../

+ Rispondi alla Discussione
Pagina 1 di 2 12 UltimaUltima

^ 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
  •  
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice [VIDEO] è Attivato
  • Il codice HTML è Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.