Back to top

Autore Topic: Far comunicare due database per un sito  (Letto 12398 volte)

Offline diegoz

  • Nuovo arrivato
  • *
  • Post: 38
    • Mostra profilo
Far comunicare due database per un sito
« il: 29 Mag 2011, 20:16:02 »
Ciao a tutti,

sono alle prese con un sito per la gestione di un albergo. Attualmente sto utilizzando un componente per la gestione delle prenotazioni, che va a creare la tabella con tutti i dati di chi esegue la prenotazione quali nome, cognome, numero di telefono, tipo di stanza e periodo. L'albergo al momento però utilizza un altro gestionale e mi è stato chiesto di interfacciarli tra loro. E' possibile dunque andare a scrivere, al momento in cui si fa la prenotazione, su entrambi i database (quello del sito joomla e quello del loro gestionale...sempre un sql). Inoltre le modifiche effettuate sul gestionale dovrebbero andare ad aggiornare anche il database del sito.
« Ultima modifica: 30 Mag 2011, 20:23:23 da diegoz »

mau_develop

  • Visitatore
Re:Far comunicare due database per un sito
« Risposta #1 il: 29 Mag 2011, 20:51:31 »
beh si che si può fare ma di pronto o simile dubito molto tu trovi qualcosa.
Inoltre non penso sia possibile costruire una extension generica, bisogna lavorare sui sorgenti di entrambi e quindi con le due applicazioni offline

M.

Offline diegoz

  • Nuovo arrivato
  • *
  • Post: 38
    • Mostra profilo
Re:Far comunicare due database per un sito
« Risposta #2 il: 29 Mag 2011, 21:26:04 »
Grazie per la risposta...immaginavo che non fosse una cosa molto semplice, comunque già sapere che sia possibile mi rincuora.
Stavo pensando di utilizzare un unico DB anzichè due comunicanti. I DB saranno quindi gestiti dal backend del sito e dal gestionale...mi sembra un po' più semplice da realizzare, oltrettutto dovrei così risolvere i problemi di allineamento.
Dal momento che non ho mai avuto a che fare con una cosa simile, vorrei chiedere se secondo voi dovrebbe essere più "facile" modificare il componente joomla per andare ad aggiornare un database esterno al sito, oppure impostare il gestionale già esistente in maniera tale che si appoggi al database del sito, con la possibilità quindi di interrogare, scrivere e cancellare.
Che ne pensate?

mau_develop

  • Visitatore
Re:Far comunicare due database per un sito
« Risposta #3 il: 29 Mag 2011, 21:45:30 »
non sapendo le tue conoscenze informatiche difficile dire cosa è facile e cosa è difficile e se saprai farlo... mi sa che dovrai valutarlo tu.
Se normalmente sviluppi estensioni o implementi il codice di joomla penso tu non avrai alcun problema

M.

Offline diegoz

  • Nuovo arrivato
  • *
  • Post: 38
    • Mostra profilo
Re:Far comunicare due database per un sito
« Risposta #4 il: 29 Mag 2011, 21:59:19 »
Beh non sono espertissimo, solitamente utilizzo applicazioni pronte e le modifico. Però mi piacciono le sfide e ci proverò...
Ti è mai capitato comunque di far interagire un sito esterno con un database joomla, oppure di appoggiare un sito joomla ad un database esterno? Avresti qualche consiglio da darmi riguardo a documentazione ecc...?
Grazie!!

Offline diegoz

  • Nuovo arrivato
  • *
  • Post: 38
    • Mostra profilo
Re:Far comunicare due database per un sito
« Risposta #5 il: 29 Mag 2011, 23:39:57 »
Mi sto concentrando sulla soluzione relativa alla gestione della tabella del componente joomla da un ambiente esterno a joomla. Quindi devo avere la possibilità di gestire il DB (o meglio parte di esso) come se fossi all'interno di joomla con privilegi di super amministratore: il problema è quindi relativo al login da "remoto" per poter effettuare tutte le operazioni sul database senza dovermi loggare anche in joomla??

mau_develop

  • Visitatore
Re:Far comunicare due database per un sito
« Risposta #6 il: 30 Mag 2011, 08:09:35 »
il db e il codice del fw sono cose separate.

ti serve l'autenticazione joomla se usi il fw joomla

La vorare su joomla prevede la conoscenza del framework poichè tutta la performance e la sicurezza è garantita a patto di sviluppare secondo la sua logica, se non la capisci e vuoi usare la tua viene fuori un casino.

Inoltre devi stare molto attento a non creare falle, avere il db di un gestionale esposto non è una grande idea (solitamente stanno nelle intranet). Non è uno scherzo se manipolano dati o li sottraggono e credimi, se stai su spazi e applicazioni non dedicate non è così difficile, tra tanti compromessi il buchino c'è sempre.

M.

Offline diegoz

  • Nuovo arrivato
  • *
  • Post: 38
    • Mostra profilo
Re:Far comunicare due database per un sito
« Risposta #7 il: 30 Mag 2011, 08:36:02 »
Ok...sospettavo potessero esserci questo tipo di problemi. Come la vederesti la creazione di un database dedicato al componente? Potrei collegarmi a quello anzichè creare una connessione esterna al DB principale...

Offline diegoz

  • Nuovo arrivato
  • *
  • Post: 38
    • Mostra profilo
Re:Far comunicare due database per un sito
« Risposta #8 il: 30 Mag 2011, 08:40:05 »
Ho trovato quest'articolo che mi è sembrato particolarmente interessante:

docs.joomla.org/Tutorial:Creating_an_Authentication_Plugin_for_J oomla_1.5

mau_develop

  • Visitatore
Re:Far comunicare due database per un sito
« Risposta #9 il: 30 Mag 2011, 08:57:40 »
no aspetta....

ho un appz con mysql gestionale APPZ GE
ho un appz Joomla con un componente che deve "incrociare dei dati " col gestionale APPZ JC

JC al salvataggio implementerà una classe dedicata alla connessione e update delle tabelle interessate GE
La stessa cosa può fare GE con la sua logica.
Attenzione al lock delle tabelle per non fare e disfare.
... e quì non vedo complicazioni oltre il conoscere ciò che si va a fare,... un bel lavoretto, impegnativo ma non trovo particolari difficoltà

Poi c'è il problema sicurezza.
Se in una prenotazione metti 4 dati in croce e te ne potresti anche fregare, in un gestionale no ( e tra l'altro ne rispondi anche penalmente) Sul gestionale trovi info approfondite. Esempio stupido potrei vedere che Gigi va in vacanza tutti gli anni il 30 febbraio e spende un pozzo di soldi.... vuoi non fargli una visitina a casa??? Se si accorgono che tutto è avvenuto a causa della tua applicazione (perchè mi beccano e glielo svelo) sono guai... ma guai seri e ti assicuro che esistono casi reali.

Detto questo non è che chi sviluppa corre il rischio di impiccagione tutte le volte... il modo per pararsi il C. esiste... fare le cose bene! Ovvero, io ho fatto tutto il possibile per evitare che qualcosa accada... poi se è accaduto mi spiace ma non ne ho responsabilità o se non altro ce l'ho molto limitatamente... capito?

Se ti faccio tutto qs discorso quindi è solo per invitarti a scegliere delle vie "sicure", non certo per scoraggiarti.

E il modo migliore è di fare un po' più di fatica, magari collaborare con un buon sysadmin (che non fa mai male) e far comunicare le due appz attraverso un tunnel dalla intranet che adotta protezioni ids e firewall.

M.

Offline diegoz

  • Nuovo arrivato
  • *
  • Post: 38
    • Mostra profilo
Re:Far comunicare due database per un sito
« Risposta #10 il: 30 Mag 2011, 09:12:27 »
Ti ringrazio tanto, non mi faccio scoraggiare e ti assicuro che voglio imparare e soprattutto fare le cose per bene. Ritengo di avere delle buone basi per mettere le mani qua e la, però quando si parla di sicurezza sono d'accordo che non ci si improvvisi e non si dia nulla per scontato. Vorrei tanto collaborare con qualcuno esperto, sai quanto mi organizzerei meglio il lavoro? Però purtroppo non è semplice trovare persone SERIE...

Offline 56francesco

  • Fuori controllo
  • *
  • Post: 29585
  • Sesso: Maschio
    • Mostra profilo
Re:Far comunicare due database per un sito
« Risposta #11 il: 30 Mag 2011, 09:29:35 »
lo dico a me stesso,
esistono solo due modi per fare le cose, uno giusto e l'altro sbagliato.
in casi come questi cioè quando  si prova a sincronizzare un gestionale con un cms come joomla (pensato per altro)  qualsiasi imprenditore sa bene che ci sono gestionali (il suo o altri) che hanno estensioni per approdare nel web, sicuramente avrà nel cassetto decine e decine di preventivi.
perchè non sceglie la via giusta? probabilmente per due motivi:
a- il suo gestionale non ha quelle estensioni perchè i suoi sviluppatori non fanno ricerca, e cambiarlo comporta investimenti;
b- per risparmiare, perchè sono estensioni che costano (il giusto) e presuppongono investimenti e formazione del personale.

conviene da sviluppatori andare a ficcarsi in tali situazioni sapendo in partenza che l'imprenditore non è disposto a sopportare il giusto investimento? forse si e forse no,  ma in ogni caso meglio farlo con un bel contrattino scritto predisposto e firmato che vi sollevi da qualsiasi rischio professionale.
 ;)
(uso XP perchè win98 non si installa) 
PS: non sono un dipendente dello sbonzor quindi è necessario un "per favore" alla richiesta e un "grazie" alla risposta, sempre! PPS: non scrivo mai per primo in MP, in caso contrario chiedimi una conferma, Grazie.

mau_develop

  • Visitatore
Re:Far comunicare due database per un sito
« Risposta #12 il: 30 Mag 2011, 10:23:18 »
conviene da sviluppatori andare a ficcarsi in tali situazioni sapendo in partenza che l'imprenditore non è disposto a sopportare il giusto investimento? forse si e forse no,
-------------------------------------------
si si si :)

Sembra da pazzi al giorno d'oggi dirlo maaa... la serietà paga eccome.
L'informatica usata professionalmente, un po' per legge, un po' per performances, non fa sconti. Puoi vendere "cose simili" ma non quello che è richiesto e questo comporta i problemi di cui dicevi.

A qs punto il malaccorto / malconsigliato / sprovveduto imprenditore si trova in un vicolo cieco: se prima fare due smanacciate di codice era una scemenza adesso le cose si complicano, caxata dopo caxata. Non è possibile proseguire in qs modo, bisogna fare seriamente.... è quì che paghi, probabilmente, il doppio allo stesso sviluppatore che hai rifiutato prima.
E quì ci stai bene attento, sei esasperato e il tuo unico incubo è uscire dai casini.... che pacchia se glielo puoi garantire!

Tutto questo ovviamente se l'applicazione ti serve veramente, non se hai un box e lo vuoi far prenotare online... quello anche se tutto fallisce metti un bell'hatml e sarai sempre soddisfatto.

E' corretto quello che dicevi... si chiama "Legge dei nodi di Capitan Findus" ...

M.

Offline diegoz

  • Nuovo arrivato
  • *
  • Post: 38
    • Mostra profilo
Re:Far comunicare due database per un sito
« Risposta #13 il: 30 Mag 2011, 12:11:42 »
Comunque, tirando le somme, dal momento che prima di far interfacciare il sito con il gestionale, dovrò interfacciarmi io con lo sviluppatore che ha costruito il gestionale, le opzioni fondalmentamente sono due:

1) Collegare il componente che sto usando con il database del gestionale, con i rischi derivanti da eventuali falle nella sicurezza.

2)Collegare il gestionale al database di joomla (oppure uno ad hoc creato per il componente che sto usando). La difficoltà qui mi pare stia nell'eseguire il login con i privilegi da un ambiente esterno a joomla, per potere leggere scrivere e cancellare dati sul DB. Si costruirà il plugin per il login e non dovrebbero esserci problemi riguardo ad eventuali intrusioni all'interno del DB del gestionale, quindi verrebbero meno tutti i problemi legati alla sicurezza.

E' corretto?

mau_develop

  • Visitatore
Re:Far comunicare due database per un sito
« Risposta #14 il: 30 Mag 2011, 12:41:31 »
1) Collegare il componente che sto usando con il database del gestionale, con i rischi derivanti da eventuali falle nella sicurezza.
----------------------------------------------
se tutto è correttamente incapsulato non succede nulla, in pratica devi fare una query su un altro db nulla di che. Il problema principale è che dovendo creare una connessione all'altro db devi inserire i dati di connessione, quindi se ti bucano joomla non hanno la minima difficoltà a perscarci dentro

2)Collegare il gestionale al database di joomla
 (oppure uno ad hoc creato per il componente che sto usando).
----------------------------------------------------------------------------
no, l'oppure lascialo perdere. Anche qui potendo inserire codice non vedo la difficoltà.

La difficoltà qui mi pare stia nell'eseguire il login con i privilegi da un ambiente esterno a joomla, per potere leggere scrivere e cancellare dati sul DB.
----------------------------------------------------------------
assolutamente no, per lavorare sul db ti basta autenticarti con lui, joomla è utente pure lui di quel db... non è suo

le cose a cui dovrai stare attento è di rispettare le tabelle in relazione... es. per un user non basterebbe la sola tabella jos_users e poi di non modificare record slegandoli dalla logica con cui sono stati inseriti. Operando al di fuori del Framework puoi fare tutto e se da un lato è un bene dall'altro crea enormi problemi.

Sostanzialmente il problema sicurezza è legato al fatto che moltiplichi le possibilità di attacco in modo esponenziale.
Se io ho un applicazione e devo attaccarlo ho dei punti precisi dove vado a cercare le vuln... l'appz, il server, i servizi (sostanzialmente) per la tua applicazione se la mia mira è il gestionale ho:

2 applicativi
2 database
2 server
2 codici implementati

.... penso non potrei trovare uno scenario migliore.... perchè esponenziale?
- perchè se arrivo ad una relazione, anche se indiretta tra le due appz posso usare una per bucare l'altra.
- perchè se sommi gli accessi amministrativi delle due appz ne hai un sacco, ne basta uno che becca un malware.

Poi creo un problema Mooolto grosso dal punto di vista aziendale il Role Management ... questo diventa insormontabile con quello che vuoi fare..... piano piano anche il posteggiatore avrà l'accesso a visualizzare i conti dei clienti ;)

M.

Offline diegoz

  • Nuovo arrivato
  • *
  • Post: 38
    • Mostra profilo
Re:Far comunicare due database per un sito
« Risposta #15 il: 01 Giu 2011, 14:43:17 »
Innanzittutto grazie per essere intervenuti...che bella questa community!!!!
Ho forse risolto, almeno dal punto di vista concettuale, il problema, vorrei sapere cosa ne pensate e se potrebbe funzionare:

Anzichè far comunicare i due database per evitare di andare incontro ai problemi di cui abbiamo parlato, potrei aggiornare il database tramite un file esterno (ad es. un csv, oppure un xml). Questo file dovrà essere uploadato nel dominio dal gestionale con una certa frequenza, e con una certa frequenza il database del sito dovrà andare a "cibarsi" di quel file.
Ora, sono un po' indeciso, prima di mettermi a studiare come effettivamente realizzare la cosa, sui seguenti aspetti:

-E' meglio aggiornare le tabelle inserendo SOLO i nuovi valori (es. nuove prenotazioni), oppure cancellando e ricreando le tabelle aggiornate (il sistema di prenotazioni verrà gestito parallelamente dal gestionale)

-Per "pianificare" l'aggiornamento, sarà opportuno definire un certo intervallo di tempo (il più piccolo possibile), allo scadere del quale dovrà essere "lanciato" lo script in php.
Questo è possibile farlo con qualcosa tipo chron oppure devo creare un demone apposito?

-Dal punto di vista della sicurezza dovremmo fare dei passi da gigante, giusto? Oltrettutto gli utenti che pagheranno tramite il sito non andranno ad aggiungersi agli utenti del sito (della tabella user), ma i loro dettagli andranno a popolare la tabella del componente...

Potreste indicarmi qualche documentazione (italiano, inglese o francese) reperibile, che spieghi i concetti che voglio realizzare in maniera chiara ed approfondita?

Grazie ragazzi!
« Ultima modifica: 01 Giu 2011, 14:49:00 da diegoz »

Offline diegoz

  • Nuovo arrivato
  • *
  • Post: 38
    • Mostra profilo
Re:Far comunicare due database per un sito
« Risposta #16 il: 02 Giu 2011, 21:25:19 »
Dovrei realizzare un programmino, probabilmente in Java, che si occuperà di eseguire il parsing del file e andrà a scrivere sul DB.
Spero solo che l'host mi offra il servizio crontab...Mau che ne pensi?
« Ultima modifica: 02 Giu 2011, 21:35:09 da diegoz »

mau_develop

  • Visitatore
Re:Far comunicare due database per un sito
« Risposta #17 il: 02 Giu 2011, 22:04:37 »
dipende dall'host, ma questo dovrebbe essere l'ultimo dei problemi, lo strumento è l'applicazione il resto va in dipendenza.
E' assurdo cercare di infilare ogni cosa sullo stesso tipo di servizio con i prezzi di oggigiorno, un appz dovrebbe produrre un suo "guadagno" e più questo è importante più bisogna spendere per lisciare la pista e far correre al meglio la nostra "macchina da soldi".

Java... omg!  non so poi su che server vai a finire cmq hai già php, mysql... vabbè se ti trovi bene così... ma ci sono infinite classi per il parsing già belle che pronte se proprio non ti va di scrivere.

M.

Offline diegoz

  • Nuovo arrivato
  • *
  • Post: 38
    • Mostra profilo
Re:Far comunicare due database per un sito
« Risposta #18 il: 03 Giu 2011, 10:12:14 »
Ho visto un po' di servizi offerti dai vari host...aruba offre la possibilità di pianificare operazioni con intervallo di tempo minimo pari a 30minuti...un tempo un po' troppo lungo per le mie esigenze.
Sono tentato ad utilizzare jcron, però se ho ben capito questo funziona solo se ci sono visitatori all'interno del sito (e potrebbe pure andarmi bene), e con moduli interni al fw (questo mi va meno bene). La mia idea era quella di posizionare il programmino nel backoffice, in un'area riservata...in maniera tale da evitare problemi di sicurezza.
Mi piacerebbe, una volta pronto il sito, che provassi a bucarmelo...=) Sono molto sensibile al tema sicurezza e vorrei imparare a creare delle "fortezze".

Offline 56francesco

  • Fuori controllo
  • *
  • Post: 29585
  • Sesso: Maschio
    • Mostra profilo
Re:Far comunicare due database per un sito
« Risposta #19 il: 03 Giu 2011, 10:28:06 »
diegoz in questo forum sono sgraditi i riferimenti ai servizi commerciali e di conseguenza anche i servizi che offrono..
per cortesia grazie.

come noterai sei incappato anche nella moderazione automatica
 :D
(uso XP perchè win98 non si installa) 
PS: non sono un dipendente dello sbonzor quindi è necessario un "per favore" alla richiesta e un "grazie" alla risposta, sempre! PPS: non scrivo mai per primo in MP, in caso contrario chiedimi una conferma, Grazie.

 



Web Design Bolzano Kreatif