Back to top

Autore Topic: Aggiungere un file alla pagina Contact  (Letto 5406 volte)

Offline trumpton

  • Esploratore
  • **
  • Post: 61
    • Mostra profilo
Aggiungere un file alla pagina Contact
« il: 23 Set 2007, 15:39:39 »
Esiste un modo per aggiungere un file alla pagina Contacts, in modo che, per esempio un client potrebbe mandare un file insieme alla sua email?

Trumpton.

Offline akramul

  • Nuovo arrivato
  • *
  • Post: 22
  • Sesso: Maschio
    • Mostra profilo
Re: Aggiungere un file alla pagina Contact
« Risposta #1 il: 23 Set 2007, 20:38:58 »
si, eziste basta che scarichi questo file scompatti e poi sostutisci nella cartella remota   

root_del_sito/components/com_contact/

dentro il fil ZIP due pagine PHP banta che sostituisci

http://151.1.162.9/outshop.net/file_com_contact.zip


Oppure sei un esperto potresti modificare i seguenti file, seguendo la guida che adesso scrivo.



Consiglio a chiunque volesse apportare queste modifiche di farsi una copia di backup dei file originali che si modificano in modo da poterli ripristinarli nell'eventualità che le modifiche non funzionassero o rendessero instabile o vulnerabile il sito. Ci tengo a specificare che il sottoscritto non ha alcuna responsabilità per utilizzo che si fa di questa informazione/soluzione.

I file da modificare sono:

root_del_sito/components/com_contact/contact.html.php
root_del_sito/components/com_contact/contact.php

Nel primo file c'è da aggiungere nella riga numero 659 la dicitura:

enctype="multipart/form-data"

quindi la riga 659 da così:

<form action="<?php echo sefRelToAbs( 'index.php?option=com_contact&Itemid='. $Itemid ); ?>" method="post" name="emailForm" target="_top" id="emailForm">

diventa così:

<form action="<?php echo sefRelToAbs( 'index.php?option=com_contact&Itemid='. $Itemid ); ?>" enctype="multipart/form-data" method="post" name="emailForm" target="_top" id="emailForm">

Questo accorgimento è necessario per la corretta gestione, tramite protocollo HTTP, del file allegato.

Sempre nel primo file nella riga numero 678 prima dei
 c'è da aggiungere il codice di seguito riportato:


<?/*************************************** INIZIO MODIFICA ***************************************/?>
<?   //Codice Modificato per permettere l'invio di Allegati al componente di default di Joomla//   ?>

<label for="contact_allegato">Allegato</label>

<INPUT TYPE="file" name="contact_allegato" id="contact_allegato" size="30" class="inputbox" value="">
<?/*************************************** INIZIO MODIFICA ***************************************/?>

Il tag label aggiunge un etichetta, mentre tamite il tag INPUT TYPE="file" si aggiunge un campo che permette di ricavare il path del file da allegare dal proprio computer.

Nel secondo file  (contact.php) c'è da aggiungere nella riga numero 434 il codice di seguito riportato:

/*************************************** INIZIO MODIFICA ***************************************/
        //Codice Modificato per permettere l'invio di Allegati al componente di default di Joomla
        $allegato = $_FILES['contact_allegato']['tmp_name'];                                     
        $allegato_type = $_FILES['contact_allegato']['type'];                                     
        $allegato_name = $_FILES['contact_allegato']['name'];                                     
        $allegato_error = $_FILES['contact_allegato']['error'];                                     
                                                                                                 
        if ($allegato_error == 0 || $allegato_error == 4){rename($allegato, $allegato_name);}     
        else{                                                                                     
            $link = sefRelToAbs( 'index.php?option=com_contact&task=view&contact_id='. $contact[0]->id .'&Itemid='. $Itemid );
            mosRedirect( $link, "Si è verificato un errore nel caricamento del file allegato, la mail non è stata inviata" );
        }                                                                                         
                                                                                                 
        $success = mosMail( $email, $name , $contact[0]->email_to, $mosConfig_fromname .': '. $subject, $text, 0, NULL, NULL, $allegato_name, NULL, NULL);
                                                                                                 
        //Stringa originale che non Allega niente                                                 
        //$success = mosMail( $email, $name , $contact[0]->email_to, $mosConfig_fromname .': '. $subject, $text );
/**************************************** FINE MODIFICA ****************************************/

Questo pezzo di codice non fa altro che caricare il file sul server creando un file temporaneo nella cartella di default usata dal server per svolgere queste operazioni. Memorizzo il nome del file temporaneo nella variabile $allegato e il nome originario nella variabile $allegato_name. In $allegato_type memorizzo il tipo di file caricato e in   $allegato_error memorizzo lo stato del file. Da questa variabile ricavo diverse informazioni in quanto è in grado di dirmi se il file è stato caricato correttamente, se non c'era nessun file da caricare o se si è verificato qualche errore nel caricamento. Se si è verificato qualche errore nel caricamento, la mail non viene inviata e visualizzo un messaggio di avviso, mentre, se il file è stato caricato correttamente rinomino il file temporaneo con il nome che aveva sul computer, per una corretta ricezione, e procedo con l'invio. Come si può vedere dall' "if" se $allegato_error assume valore 4 (vuol dire chè non c'era nessun file da caricare) gli faccio fare lo stesso la rinomina del file, solo che non essendocci nessun file e come se rename($allegato, $allegato_name) non ci fosse neanche scritto e procede nell'invio della mail normalmente senza allegato.

Per l'invio della mail utilizzo la funzione mosMail, già presente in Joomla, per passargli tutte le informazioni di cui ha bisogno per inviare la mail.

Alla fine del codice ho lasciato commentata la riga originale che usava il componente.

All'interno di questo codice non ho inserito nessun controllo ne sul peso ne sul tipo di file caricato. Questo volutamente in quanto, per il tipo, voglio che sia possibile allegare qualunque tipo di file, mentre per la grandezza ne affido il controllo a php che tramite post_max_size e upload_max_filesize specificati sul server mi bloccano il caricamento del file quando supera il peso massimo specificato.

Per aggiungere un controllo sul peso del file potevo usare filesize, questo però non mi risolveva il problema dell'evitare traffico sul server in quanto prima di determinarne il peso doveva avare tutto il file già caricato sul server.
« Ultima modifica: 26 Set 2007, 13:47:18 da akramul »
~~~~~~~~~~~~~~~~~~~~&~~~~~~~~~~~~~~~~~~~~

Condividiamoci le IDEE sul Forum Joomla.It  ~~~~~~~~~~~~~~~~~~~~&~~~~~~~~~~~~~~~~~~~~

Offline Maorinz

  • Instancabile
  • ******
  • Post: 2641
  • Sesso: Maschio
  • ©il brillar per se stessi non porta emozioni
    • Mostra profilo
Re: Aggiungere un file alla pagina Contact
« Risposta #2 il: 23 Set 2007, 20:42:06 »
Ciao akramul.
Se la tua soluzione funzionasse sarebbe interesante e nekl caso meriterebbe anche rilievo, quindi invito gli user che proveranno a postare i risultati.
Un'altra cosa: NO SPAM. ;)
Grazie.

Offline akramul

  • Nuovo arrivato
  • *
  • Post: 22
  • Sesso: Maschio
    • Mostra profilo
Re: Aggiungere un file alla pagina Contact
« Risposta #3 il: 23 Set 2007, 20:59:51 »
ricevuto NO SPAM comunque questa soliìuzione ho trovato in rete Inglese ed ho tradotto in italiano poichè non sono molto bravo con PHP ma conosco molto bene HTML.


Sto provando ad imparare PHP e quindi faccio delle ricerche visto che mi piacie software free ed questa quello che ho messo sono codici free.
~~~~~~~~~~~~~~~~~~~~&~~~~~~~~~~~~~~~~~~~~

Condividiamoci le IDEE sul Forum Joomla.It  ~~~~~~~~~~~~~~~~~~~~&~~~~~~~~~~~~~~~~~~~~

Offline trumpton

  • Esploratore
  • **
  • Post: 61
    • Mostra profilo
Re: Aggiungere un file alla pagina Contact
« Risposta #4 il: 23 Set 2007, 23:03:32 »
Grazie per questa soluzione, cerco di inserire nel mio sito.

Un altrà cosa, nel caso che hai due contatti: Contatto A e Contatto B, e uno vuole che l'opzione di aggiungere file al mesaggio viene solo nel caso che l'utente scrivi a contatto B, c'è un modo per fare questo?

Una soluzione potrebbe essere  ??? di prendere  una copia di "contact.html.php", ed aggiungere la modifica. Poi fare un link static dal main menu direttamente alla pagina modificato.

Sarebbe piu pulito se c'era un controllo sulla pagina contact.html.php che dici, "solo se il Contatto ID =# (in questo caso Contatto A) = "TRUE"

Nel caso  che contact.php è cambiato come nel tuo link, e un utente manda un messaggio dove non c'è un file allegato (Contatto A), il sitema manda il messaggio?. Cioè, il campo per aggiungere un file è obbligatorio?

Dal tuo messagio forse qualcun PHP programmatore puo' sapere?

Codice: [Seleziona]
<form action="<?php echo sefRelToAbs'index.php?option=com_contact&Itemid='$Itemid ); ?>" enctype="multipart/form-data" method="post" name="emailForm" target="_top" id="emailForm">

Questo accorgimento è necessario per la corretta gestione, tramite protocollo HTTP, del file allegato.

Sempre nel primo file nella riga numero 678 prima dei
 c'è da aggiungere il codice di seguito riportato:


<?/*************************************** INIZIO MODIFICA ***************************************/?>
<?   //Codice Modificato per permettere l'invio di Allegati al componente di default di Joomla//   ?>

<label for="contact_allegato">Allegato</label>

<INPUT TYPE="file" name="contact_allegato" id="contact_allegato" size="30" class="inputbox" value="">
<?/*************************************** INIZIO MODIFICA ***************************************/?>

Offline trumpton

  • Esploratore
  • **
  • Post: 61
    • Mostra profilo
Re: Aggiungere un file alla pagina Contact
« Risposta #5 il: 24 Set 2007, 13:36:12 »
Ho provato inserire:

Mi da questo messaggio dopo che ho inserito tutti dati, e ho allegato il file.

"Warning: rename (/tmp/phpwOYFxE,file.txt [function.rename]:Permission denied in contact.php on line 441"

file.txt e il file che sto caricando.

Sembra che il problema sia qua:

Codice: [Seleziona]
$params = new mosParameters( $contact[0]->params );

Trumpton.

Offline trumpton

  • Esploratore
  • **
  • Post: 61
    • Mostra profilo
Re: Aggiungere un file alla pagina Contact
« Risposta #6 il: 24 Set 2007, 13:42:46 »
Che permissione deve essere per la funzionamento del Contact (ora impostato a CHMOD 644)

Nonstante che compilo tutti i dati quando premo "invio" il messagio, "Assicurati che il modulo sia completo e valido".

Pero ho compilato tutto :(

Offline akramul

  • Nuovo arrivato
  • *
  • Post: 22
  • Sesso: Maschio
    • Mostra profilo
Re: Aggiungere un file alla pagina Contact
« Risposta #7 il: 26 Set 2007, 13:39:42 »
Citazione
Che permissione deve essere per la funzionamento del Contact (ora impostato a CHMOD 644)

Nonstante che compilo tutti i dati quando premo "invio" il messagio, "Assicurati che il modulo sia completo e valido".

Pero ho compilato tutto



Quando appare questo messaggio significa che devi configurare bene le Configurazioni Globali email ti riporto topic dove ti spiega come funziona.

http://forum.joomla.it/index.php/topic,5134.msg123773.html#msg123773
« Ultima modifica: 26 Set 2007, 13:42:30 da akramul »
~~~~~~~~~~~~~~~~~~~~&~~~~~~~~~~~~~~~~~~~~

Condividiamoci le IDEE sul Forum Joomla.It  ~~~~~~~~~~~~~~~~~~~~&~~~~~~~~~~~~~~~~~~~~

Offline trumpton

  • Esploratore
  • **
  • Post: 61
    • Mostra profilo
Re: Aggiungere un file alla pagina Contact
« Risposta #8 il: 26 Set 2007, 17:00:30 »
Grazie ho scoperto il problema. C'era un controllo sulla parte di Joomla che gli indirizzi inseriti nei "contacts" ha gli stessi del dominio nella configurazione.

Non ho capito come sara' possibile creare due "contact forms", in modo che solo selezionando una deteminate contact sara' disponsibile la possbilita' inviare un file (come elaborato sopra) con la richesta.

Trumpton.

Offline Enidocom

  • Esploratore
  • **
  • Post: 189
    • Mostra profilo
Re:Aggiungere un file alla pagina Contact
« Risposta #9 il: 25 Feb 2011, 15:02:59 »
Ragazzi ma questo vale anche joomla 1.5 e poi ho provato ma nn funge mi da un fatal error sulla linea 20 di contact.php

 



Web Design Bolzano Kreatif