Autore Topic: Invio form a DataBase e a casella mail  (Letto 6681 volte)

marcoboni

  • Nuovo arrivato
  • *
  • Post: 78
    • Egimotors-Polaris
Invio form a DataBase e a casella mail
« il: 09 Gennaio, 2012, 15:18:36 »
 :D Buongiorno, ho necessità di andare oltre il 5°step........ ;)
Ho messo questo form nel mio sito  http://www.egimotors.it/concessionari.html  che invia le info raccolte a un database, vorrei fare in modo che oltre a popolare il database venga inviata anche una mail ai miei colleghi del commerciale 2caselle di posta per la precisione..........
Il progetto è nato con la 8 l'ho importato nella versione 9 e il modulo in questione è stato creato con la nuova versione di website.
Come sempre Grazie! 8)

tigrone

  • Anziani
  • Utente esperto
  • *
  • Post: 322
    • tuoweb
Re:Invio form a DataBase e a casella mail
« Risposta #1 il: 09 Gennaio, 2012, 16:11:57 »
ho necessità di andare oltre il 5°step

Per far le cose come si deve, non bisognerebbe andare avanti bensì... indietro!


(1-5) Gli steps di Incomedia
(0) MySQL
(-1) PHP
(-2) Javascript
(-3) CSS
(-4) HTML


Considerazioni:
- partendo dal -4... una volta arrivati al -2, EVO diventerebbe inutile e non servirebbe a nulla!
- arrivati allo 0, non si chiederebbe più nulla nel forum: si diventerebbe 'maestri'!
- ribaltare questa gerarchia non fa altro che complicare enormemente le cose; sia per chi chiede, sia per chi risponde...


Considerazione supplementare per chi non ha tempo/voglia:
- rivolgersi ad un programmatore
- cambiare programma (joomla, drupal, wordpress, ecc.....)


 ;)




Nel caso specifico, se l'esigenza è SOLO mandare 2 mail, ai soliti indirizzi, quando viene popolato il db, basta individuare lo script che effettua questa operazione, aprirlo, individuare la parte di codice che effettua questa operazione e, subito dopo, inserire 1 riga di codice php per ogni mail da inviare:
Codice:
Only registered users can see contents. Please click here to Register or Login.modificare e salvare lo script (operazione da rifare ad ogni esportazione)... caricare sul server. 


Funzione mail():  [size=78%]http://www.codicefacile.it/tutorials/tutorials.php/11/Inviare_email_con_PHP_1_parte[/size]

milux

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1779
    • 3MD
Re:Invio form a DataBase e a casella mail
« Risposta #2 il: 09 Gennaio, 2012, 19:46:10 »
....................
Nel caso specifico, se l'esigenza è SOLO mandare 2 mail, ai soliti indirizzi, quando viene popolato il db, basta individuare lo script che effettua questa operazione, aprirlo, individuare la parte di codice che effettua questa operazione e, subito dopo, inserire 1 riga di codice php per ogni mail da inviare:
Codice:
Only registered users can see contents. Please click here to Register or Login.modificare e salvare lo script (operazione da rifare ad ogni esportazione)... caricare sul server. 


Funzione mail():  [size=78%]http://www.codicefacile.it/tutorials/tutorials.php/11/Inviare_email_con_PHP_1_parte[/size]



ciao Tigre, questa funzione è stata chiesta più volte a ICM che fino ad adesso non ha risposto. Nei giorni scorsi ho fatto diverse prove analizzando la differenza dei moduli inviati al DB o come email. Dopo diverse prove andate a vuoto ho trovato un probabile parametro da settare nel file x5engine.php oltre a modificare dei dati all'interno di imEmailForm.


Ammettendo pure di riuscire a trovare i parametri corretti , resta poi sempre il problema che ad ogni aggiornamento del sito occorre modificare e ricaricare con ftp i files incriminati.
**OS : Windows 7 - 63Bit (uno è andato perso e non lo trovo..) + W10
**Website X5 :  Evo 10(active) - Evo 11(active) - 13(active)
**Wysiwyg Web Builder 12 (passa al lato oscuro..)
**Hosting : LINUX
**Editor : Notepad ++ / Geany

tigrone

  • Anziani
  • Utente esperto
  • *
  • Post: 322
    • tuoweb
Re:Invio form a DataBase e a casella mail
« Risposta #3 il: 09 Gennaio, 2012, 20:56:54 »



Fai prima a farti un form html con relativo script php dedicato...

marcoboni

  • Nuovo arrivato
  • *
  • Post: 78
    • Egimotors-Polaris
Re:Invio form a DataBase e a casella mail
« Risposta #4 il: 09 Gennaio, 2012, 21:55:09 »
Mah!  siceramente mi basta trovare una soluzione, anche se poi tutte le volte che farò un'aggiornamento dovrò ricaricare i file modificati........ cmq ho seguito il consiglio di tigrone e mi metto a studiare un pò di php, tempo permettendo stiamo facendo altri lavori importanti e il sito in questo periodo è messo in un angolo...... :D   grazie comunque! ;)

milux

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1779
    • 3MD
Re:Invio form a DataBase e a casella mail
« Risposta #5 il: 12 Gennaio, 2012, 08:45:35 »
non aggiungo commenti...  http://answers.websitex5.com/post/20873
**OS : Windows 7 - 63Bit (uno è andato perso e non lo trovo..) + W10
**Website X5 :  Evo 10(active) - Evo 11(active) - 13(active)
**Wysiwyg Web Builder 12 (passa al lato oscuro..)
**Hosting : LINUX
**Editor : Notepad ++ / Geany

marcoboni

  • Nuovo arrivato
  • *
  • Post: 78
    • Egimotors-Polaris
Re:Invio form a DataBase e a casella mail
« Risposta #6 il: 12 Gennaio, 2012, 10:53:57 »
Scusi mi da una una cocacola?  va bene, ecco la sua birra bella fresca......tanto disseta cmq :-X aly
Welcome in Italy.

milux

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1779
    • 3MD
Re:Invio form a DataBase e a casella mail
« Risposta #7 il: 12 Gennaio, 2012, 12:37:52 »
come ho scritto, grazie a Stesil e diverse prove , una mezza soluzione si sarebbe trovata modificando  imEmailForm.php. Il problema è che se per qualche motivo riapri il modulo o la pagina che contiene il modulo , il programma al primo aggiornamento ci infila [/size]imEmailForm.php e ti perdi le modifiche fatte. [/color]
[/size][/color]
[/size]Quello che mi lascia perplesso è che per fare questa modifica ci vogliano circa 2 mesi...[/color]
**OS : Windows 7 - 63Bit (uno è andato perso e non lo trovo..) + W10
**Website X5 :  Evo 10(active) - Evo 11(active) - 13(active)
**Wysiwyg Web Builder 12 (passa al lato oscuro..)
**Hosting : LINUX
**Editor : Notepad ++ / Geany

serzio

  • Amministratore
  • Utente storico
  • *****
  • Post: 1706
Re:Invio form a DataBase e a casella mail
« Risposta #8 il: 12 Gennaio, 2012, 22:10:18 »
come ho scritto, grazie a Stesil e diverse prove , una mezza soluzione si sarebbe trovata modificando  imEmailForm.php. Il problema è che se per qualche motivo riapri il modulo o la pagina che contiene il modulo , il programma al primo aggiornamento ci infila imEmailForm.php e ti perdi le modifiche fatte.

Quello che mi lascia perplesso è che per fare questa modifica ci vogliano circa 2 mesi...


Come già ho spiegato in area privata a stesil e milux ed alla luce dei comportamenti strani che rilevato sul "modulo email" e che ho inserito nella lista bug, checchè ne dica l'assistenza tecnica:
penso che il problema sia risolvibile in almeno due sistemi diversi, uno è stato già sviluppato da stesil e spero ne voglia condividere il contenuto. L'altro, per il momento, è solo una mia farneticazione ... che presuppone una modifica al motore di icm, il file x5engine.php

stesil

  • Anziani
  • Utente storico
  • *
  • Post: 1219
    • quellidelcucuzzolo
Re:Invio form a DataBase e a casella mail
« Risposta #9 il: 12 Gennaio, 2012, 23:03:06 »
Certo che condivido! L'unica mia preoccupazione è di non fare danni ... quindi provare bene che tutto funzioni come dovrebbe prima di applicare nel progetto vero.

Questa è la "mezza soluzione" che ho trovato ... e a me funziona: i dati vengono inseriti nel database e ricevo tutte le mail che dovrei ricevere:

Nel file imEmailForm.php a cui è collegato il form ho aggiunto gli indirizzi mail in questi campi:

Citazione
<?php
    $settings['imEmailForm_0_1'] = array(
        "owner_email_from" => "mailmittente@mail.it",
        "owner_email_to" => "maildestinatario1@mail.it, maildestinatario2@mail.it",


Se nella costruzione del form si usa il trucco scovato da Sergio (è un bug buono, tieniamocelo! :) ) http://www.unofficialwsx5.com/index.php?topic=502.0  ... questa fase non è necessaria perchè i parametri risultano già compilati. Eventualmente è necessario aggiungere solo il secondo destinatario, se serve.

La seconda modifica consente l'invio della mail e deve essere fatta a questa parte di codice, sempre nello stesso file (aggiungere la parte in rosso):

Citazione
if ($storage->addData($database_data, $files_data)) {
@header('Location: ' . $settings['imEmailForm_0_1']['confirmation_page']);
$email = new imSendEmail();
$email->sendFormEmail($settings['imEmailForm_0_1'], $form_data, $files_data);


}
else

facendo attenzione che coincidano i numeri che identificano il form imEmailForm
_0_1

Se nel form è già previsto l'invio di una mail all'utente che compila il modulo, il codice sopra riportato è già presente e basta solo cancellare il parametro TRUE e la virgola che lo precede:

Citazione
if ($storage->addData($database_data, $files_data)) {
                @header('Location: ' . $settings['imEmailForm_4_3']['confirmation_page']);
                $email = new imSendEmail();
                $email->sendFormEmail($settings['imEmailForm_4_3'], $form_data, $files_data, TRUE);
            } else


A questo punto salvare il file ed esportarlo, sovrascrivendo il file originale. Ad ogni nuova esportazione bisogna però controllare che il file non venga sovrascritto o addirittura cambiato. Ed in entrambi i casi occorre rifare le modifiche al file e riesportare.

Se il form è definitivo, quindi non si prevedono variazioni nei campi, secondo me è più conveniente salvare il file con un nome diverso (es: imEmailForm_database.php ...... per funzionare deve chiamarsi imEmailForm_quellochevuoi.php), quindi nel modulo invio email, scheda invio, scegliere "invia i dati ad un file" e selezionare il file imEmailForm_nomechevuoi.php precedentemente creato.

...non è semplicissimo da spiegare .. spero si capisca qualcosa ...



marcoboni

  • Nuovo arrivato
  • *
  • Post: 78
    • Egimotors-Polaris
Re:Invio form a DataBase e a casella mail
« Risposta #10 il: 13 Gennaio, 2012, 09:09:16 »
Ciao Stesil, le tue modifiche sono spiegate benenissimo, infatti questa mattina le ho applicate e.........funzionano benissimo ;)
Finalmente hai miei commerciali arriva la mail ed io ho il mio DB che si popola in automatico.
Grazie! ( sono in debito) :)
 

serzio

  • Amministratore
  • Utente storico
  • *****
  • Post: 1706
Re:Invio form a DataBase e a casella mail
« Risposta #11 il: 13 Gennaio, 2012, 09:11:02 »
L'idea parte dalla constatazione che i file /mail/imEmailForm.php vengono ricreati continuamente ad ogni modifica del modulo e pertanto un sistema che interessi loro non è affidabile in quanto le modifiche effettuate rischierebbero di essere perse ad ogni esportazione che interessi i moduli.
 
 D'altra parte, anche il metodo che tiene conto della faccenda del bug annunciato su >> QUI << , contrariamente all'entusiasmo iniziale, è scomodo e rischia di essere invalidato ad ogni aggiornamento fatto da icm al suo website.
 
 Quello che rimane e che mi sembra una strada promettente è l'inserimento di un parametro direttamente nella riga dell' "oggetto" presente nella sezione dell' "email di conferma all'utente" con una sintassi del tipo messaggio [-owner email_owner] ad esempio:

"La tua richiesta è stata inoltrata -owner nome@dominio.xx"

[ Guests cannot view attachments ]
in cui si specifica la presenza di una opzione owner e l'indirizzo a cui inviare l'email. Naturalmente con lo stesso metodo si possono inserire anche altri parametri "opzione" facoltativi. In pratica viene inviata l'email all'owner solo se è presente l'opzione -owner, altrimenti il comportamento rimane inalterato rispetto a quanto previsto dal produttore.

Per mettere in pratica questo metodo è necessario metter mani al file x5engine.php (direttamente sul pc, in locale) ed inserire, dopo aver backuppato la versione originale, le righe mostrate a partire dalla riga 296, ovvero prima dell'inizio della sezione //Send email to owner come mostrato in figura: [ Guests cannot view attachments ]

Codice:
Only registered users can see contents. Please click here to Register or Login.
I commenti si possono cancellare anche se personalmente preferisco lasciarli a memoria di quanto inserito successivamente e non standard.

Non l'ho testato a fondo e quindi lascio questo post a titolo di spunto per successive integrazioni e sviluppi ... sempre che la cosa sia degna di essere sviluppata.
 

serzio

  • Amministratore
  • Utente storico
  • *****
  • Post: 1706
Re:Invio form a DataBase e a casella mail
« Risposta #12 il: 16 Gennaio, 2012, 15:50:04 »
L'idea parte dalla constatazione che i file /mail/imEmailForm.php vengono ricreati continuamente ad ogni modifica del modulo e pertanto un sistema che interessi loro non è affidabile in quanto le modifiche effettuate rischierebbero di essere perse ad ogni esportazione che interessi i moduli.
 
 D'altra parte, anche il metodo che tiene conto della faccenda del bug annunciato su >> QUI << , contrariamente all'entusiasmo iniziale, è scomodo e rischia di essere invalidato ad ogni aggiornamento fatto da icm al suo website.
 
 Quello che rimane e che mi sembra una strada promettente è l'inserimento di un parametro direttamente nella riga dell' "oggetto" presente nella sezione dell' "email di conferma all'utente" con una sintassi del tipo messaggio [-owner email_owner] ad esempio:
"La tua richiesta è stata inoltrata -owner nome@dominio.xx"

(Attachment Link)
in cui si specifica la presenza di una opzione owner e l'indirizzo a cui inviare l'email. Naturalmente con lo stesso metodo si possono inserire anche altri parametri "opzione" facoltativi. In pratica viene inviata l'email all'owner solo se è presente l'opzione -owner, altrimenti il comportamento rimane inalterato rispetto a quanto previsto dal produttore.

Per mettere in pratica questo metodo è necessario metter mani al file x5engine.php (direttamente sul pc, in locale) ed inserire, dopo aver backuppato la versione originale, le righe mostrate a partire dalla riga 296, ovvero prima dell'inizio della sezione //Send email to owner come mostrato in figura: (Attachment Link)

Codice:
Only registered users can see contents. Please click here to Register or Login.
I commenti si possono cancellare anche se personalmente preferisco lasciarli a memoria di quanto inserito successivamente e non standard.

Non l'ho testato a fondo e quindi lascio questo post a titolo di spunto per successive integrazioni e sviluppi ... sempre che la cosa sia degna di essere sviluppata.


Alla luce dell'esito di http://answers.websitex5.com/post/21233 posso anche semplificare la questione con la relativa certezza che non verrà vanificata da successivi aggiornamenti di website.
In sostanza, si tratta del passaggio del campo email che non è più necessario in quanto è stato confermato che è sufficiente inserirlo nel pannello dell'invio "risultati via email" e poi spostarlo su "invio a database".

Topografo

  • Utente esperto
  • ***
  • Post: 265
Re:Invio form a DataBase e a casella mail
« Risposta #13 il: 07 Luglio, 2013, 09:05:27 »
Ho fatto la modifica di Serzio, backuppando prima il file e esportando il x5engine.php (che ho trovato in res).
Tutto a posto, ma dev'essere successo qualcosa perchè ora alcuni file (.php e non...) non me li fa esportare.
La cosa è strana, non dovrebbe entrarci nulla, ho guardato i permessi sono 0644 ma ieri ho "pistolato" un pò per capire dal plesk le varie opzioni e fatto tentativi di cambiare a mano i php con il blocco note.
Ho anche creato un nuovo progetto dal backup, ho visto che non esportava e l'ho cancellato...

Gli errori sono da Filezilla (ne riporto solo uno):
Citazione
Risposta:    227 Entering Passive Mode (85,18,11,83,231,238).
Comando:    STOR coupon01.php
Risposta:    550 coupon01.php: Permission denied
Errore:    Errore critico trasferimento file


Mentre l'errore da Website è:
Errore nell'esportazione del file
e non mi esporta coupon01.php
imisitemap.html
menu2.html

Dove non c'è una logica, o almeno sono gli ultimi file modificati se non che ho modificato anche l'index.html...
e quindi?

Per tornare al problema dell'Owner, vedo che la sintassi è indicata come "La tua richiesta è stata inoltrata -owner nome@dominio.xx"
Mentre in questa immagine vedo altri caratteri (una linea verticale): c'è un motivo?E' un refuso? Non servono caratteri strani o parentesi quadre, vero?