implementazione di una interfaccia per l`estrapolazione
Transcript
implementazione di una interfaccia per l`estrapolazione
UNIVERSITÀ POLITECNICA DELLE MARCHE FACOLTA’ DI INGEGNERIA Corso di Laurea in Ingegneria Informatica e dell’Automazione IMPLEMENTAZIONE DI UNA INTERFACCIA PER L’ESTRAPOLAZIONE DI INFORMAZIONI DA SITI WEB, PER IL COMMERCIO DI PARAFARMACI Tesi di Laurea di: Matteo Egidi Relatore: Prof. Aldo Franco Dragoni Anno Accademico 2010/2011 A nonno Gino, nonna Maria e zio Bruno INDICE INDICE .................................................................................................................................................. I INTRODUZIONE ................................................................................................................................ 1 MOTIVAZIONI ...................................................................................................................................... 1 OBIETTIVI .......................................................................................................................................... 4 STRUTTURA DELLA TESI .................................................................................................................... 6 CAPITOLO 1 – SPECIFICHE DI PROGETTO ...................................................................... 7 1.1 INTRODUZIONE .................................................................................................................... 7 1.2 ANALISI DI UN SITO WEB ..................................................................................................... 8 1.2.1 Analisi del Sito www.saninforma.it .............................................................................. 10 1.2.2 Analisi del Sito www.parafarmacia.it........................................................................... 17 SPECIFICHE DI BASE ......................................................................................................................... 23 CAPITOLO 2 2.1 2.2 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.3 2.4 INTRODUZIONE .................................................................................................................. 24 PACCHETTO XAMPP ......................................................................................................... 24 In Cosa consiste? ......................................................................................................... 24 Web Server Apache ...................................................................................................... 25 Database MySQL ......................................................................................................... 27 PHP .............................................................................................................................. 27 Installazione del Pacchetto XAMMP ............................................................................ 29 Esecuzione XAMPP ...................................................................................................... 30 APTANA STUDIO 3.0.2 ....................................................................................................... 32 WEB BROWSER MOZILLA FIREFOX 5.0 IT .......................................................................... 33 CAPITOLO 3 3.1 3.2 3.2.1 3.2.2 3.2.3 3.3 3.3.1 3.3.2 3.3.3 3.4 3.4.1 3.4.2 – STRUMENTI UTILIZZATI......................................................................... 24 –PROGETTAZIONE E REALIZZAZIONE ................................................. 35 INTRODUZIONE .................................................................................................................. 35 FUNZIONI PHP UTILIZZATE ................................................................................................ 37 Ottenimento del sorgente HTML .................................................................................. 37 Estrapolazione delle informazioni dal sorgente HTML ............................................... 39 Memorizzazione delle informazioni in un database ..................................................... 44 ALGORITMI IMPLEMENTATI PER LA REALIZZAZIONE DELL‟INTERFACCIA ........................... 48 Estrazione codice HTML .............................................................................................. 48 Estrapolazione delle informazioni dal sorgente HTML ............................................... 50 Memorizzazione delle informazioni in un database ..................................................... 64 MEMORIZZAZIONE DELLE INFORMAZIONI .......................................................................... 66 Database Saninforma ................................................................................................... 66 Database Parafarmacia ............................................................................................... 71 CAPITOLO 4 - CMS ZEN CART E CMS E-COMMERCE ................................................. 78 4.1 INTRODUZIONE .................................................................................................................. 78 4.2 CMS ZEN CART ................................................................................................................. 81 4.2.1 In cosa consiste il CMS Zen Cart? ............................................................................... 81 4.2.2 Da chi è distribuito? ..................................................................................................... 82 4.2.3 Requisiti Server per Zen Cart ....................................................................................... 83 4.2.4 Preparare l’installazione di Zen Cart .......................................................................... 83 4.2.5 Installazione Zen Cart in locale ................................................................................... 85 4.2.6 Testing di Zen Cart ....................................................................................................... 92 4.2.7 LINK al sito .................................................................................................................. 96 4.3 CMS OSCOMMERCE........................................................................................................... 97 4.3.1 In cosa consiste il CMS osCommerce? ......................................................................... 97 4.3.2 Da chi è distribuito? ..................................................................................................... 97 4.3.3 Requisiti Server per osCommerce ................................................................................ 98 4.3.4 Preparare l’installazione di osCommerce .................................................................... 98 i 4.3.5 4.3.6 4.3.7 Installazione osCommerce in locale ............................................................................. 99 Testing di OsCommerce ............................................................................................. 102 LINK al sito ................................................................................................................ 105 CAPITOLO 5 5.1 5.2 5.3 5.4 - CONCLUSIONI- .......................................................................................... 106 INTRODUZIONE ................................................................................................................ 106 CONSIDERAZIONI FINALI ................................................................................................. 106 POSSIBILI APPLICAZIONI................................................................................................... 110 SVILUPPI FUTURI ............................................................................................................. 111 RINGRAZIAMENTI ....................................................................................................................... 112 BIBLIOGRAFIA .............................................................................................................................. 114 LIBRI............................................................................................................................................... 114 SITOGRAFIA..................................................................................................................................... 114 ii INTRODUZIONE ____________________________________________________________________ INTRODUZIONE Motivazioni Internet, la Rete delle Reti, è stato sempre descritto come un mondo a sé stante, in perpetuo mutamento, un luogo dov‟è possibile cercare e trovare quotidianamente elementi più o meno innovativi ed utili, ma sempre interessanti. E‟ un grande mare dove c‟è spazio per tutti: per chi aspira ad instaurare relazioni sociali o divertirsi, per chi svolge approfondimenti e ricerche, per chi punta a realizzare un business come l‟acquisto e la vendita di prodotti. La nascita di Internet risale alla fine degli anni sessanta come il risultato di uno studio commissionato dal Ministero della Difesa degli Stati Uniti ad alcune università. Lo scopo di questo studio era quello di realizzare una rete militare finalizzata allo scambio di informazioni veloce e sicuro che fosse in grado di connettere dei sistemi diversi tra loro, situati in luoghi distanti e di garantire lo scambio di informazioni anche nel caso in cui parti della rete erano danneggiate. Oggi, spesso, si associa erroneamente ad Internet il sinonimo di World Wide Web detto più semplicemente Web, che letteralmente significa “ragnatela”. Internet, in realtà, è un enorme Rete, dove nel gergo informatico, una Rete non è altro che un insieme di calcolatori che comunicano tra di loro attraverso una grande quantità di cavi, elaboratori e macchinari tecnici di vari tipi e dimensioni. Parliamo sempre di qualcosa che potremmo “toccare” e cioè qualcosa di fisico. 1 INTRODUZIONE ____________________________________________________________________ Per Web (detto anche World Wide Web o più semplicemente W3),invece, si intende un insieme di oggetti virtuali, di informazioni variamente codificate (testi, immagini, suoni ecc.) che non potremmo fisicamente toccare. La comparsa del “WWW” risale a metà degli anni ‟90 per mezzo della geniale intuizione di Tim Berners Lee. Oggi il Web è l‟applicazione Internet che ha ottenuto il maggior gradimento da parte degli utenti e questo perché la sua caratteristica principale è quella di essere interattivo e operare su richiesta, le persone sono in grado di ricevere quello che vogliono, quando e dove vogliono, al contrario degli altri media (radio e televisione) che, invece, costringono gli utenti ad un utilizzo in determinati orari e in determinati luoghi. Un altro aspetto fondamentale del Web è che garantisce l‟accesso universale all‟informazione; infatti prima della sua nascita, per accedere a documenti diversi su computer diversi, occorrevano disparati terminali, collegati a macchine differenti e con software differenti. Con l‟avvento del W3 e la realizzazione dell‟accesso universale all‟informazione, se un documento è disponibile lo è da ogni computer, in ogni località, da parte di ogni utente autorizzato e attraverso un unico software (Browser). Tipicamente il Web è organizzato secondo un‟ architettura client/server nella quale sono previste due tipologie di componenti software: il client (che coincide con il Browser) è lo strumento a disposizione dell'utente che gli permette l'accesso nel Web e il server che è un processo in esecuzione su un elaboratore (di norma,è sempre in esecuzione tranne che in situazioni eccezionali). Il server mette a disposizione l‟informazione, i client la usano e l‟infrastruttura utilizzata per questa comunicazione è Internet. Architettura client/server 2 INTRODUZIONE ____________________________________________________________________ In generale, quindi, possiamo dire che Internet è la Rete, mentre il Web è la Rete nella Rete che ha permesso di rendere Internet più semplice. La vera ricchezza di Internet è costituita dalla massa informe di informazioni in continuo aggiornamento messa a disposizione degli utenti che a causa della sua vastità può sembrare come “occasionale e disorganizzata”. Quindi Internet presenta il problema tipico di qualsiasi sistema che contiene troppe informazioni, cioè il problema di trovarle quando esse servono. Con il passare del tempo le strategie di mercato di diverse imprese, oltre a basarsi sui metodi tradizionali che il marketing da sempre ha previsto e proposto, ha deciso che possono essere attuate anche online; evidentemente ciò è possibile con i mezzi e nei modi che il Web consente. Affinché questo possa essere effettuato, si presuppone che si abbia a disposizione i siti internet che dispongono delle informazioni necessarie, in modo tale che la ricerca tra le varie informazioni viene svolta in maniera efficiente ed efficace, anche se non risulta essere certamente facile a causa della vastità di informazioni in cui si và ad effettuare la ricerca. La motivazione che ha spinto sempre più aziende nell‟attuare la ricerca online, sta nel fatto che parecchie informazioni, evidentemente non tutte, sono presenti nel Web ed inoltre esse possono essere recuperate velocemente e con minori costi. La ricerca delle informazioni online è alla base del commercio elettronico (chiamato più comunemente e-commerce) il quale non è altro che un modo per fare business, realizzare affari, vendere od acquistare per via telematica; ai documenti cartacei comunemente usati nel commercio tradizionale, si utilizza il computer per presentare prodotti, fare offerte, vendere, formulare ordini d‟acquisto, pagare, inviare messaggi ecc. Al girono d‟oggi per la creazione di siti web aziendali e la realizzazione e gestione di portali utilizzati per il commercio elettronico, vengono utilizzati degli appositi CMS (content management system), letteralmente "sistema di gestione dei contenuti". Un Content Management System è uno strumento software, installato su un Web Server, realizzato al fine di semplificare la gestione dei contenuti di siti Web, svincolando l‟amministratore da conoscenze tecniche di programmazione. 3 INTRODUZIONE ____________________________________________________________________ Obiettivi Scopo principale di questa tesi è quello di esporre il lavoro svolto nel progettare ed implementare un‟interfaccia, che è stata richiesta e verrà utilizzata dalla Farmacia Blasi Dott. Giuseppe con sede a Monsampietro Morico (FM), per prelevare delle informazioni dalle schede tecniche dei parafarmaci presenti in alcuni siti Web. Tali informazioni potranno così essere successivamente, utilizzate per il commercio elettronico degli stessi. La lista dei siti web da cui prelevare le informazioni è stata fornita dagli utilizzatori finali dell‟interfaccia. Il termine parafarmaco sta ad indicare tutto quello che generalmente può essere venduto in farmacia e non è registrato come farmaco, ovvero tutto ciò che per definizione non è soggetto a prescrizione medica e non è mutuabile. Di questa categoria fanno parte: Prodotti di cosmesi: qualsiasi tipo di crema, fango, trucchi e prodotti che abbiano finalità estetiche o lenitive per piccoli inestetismi. Prodotti per l’automedicazione Disinfettanti, cerotti, fasciature, kit pronto soccorso, ovatta sterile, ecc. Prodotti per l’infanzia Tutto ciò che riguarda il bambino a partire dai ciucci, omogeneizzati, biscotti, biberon, ecc. Inoltre ne fanno parte anche i prodotti per la mamma, come ad esempio reggi seni particolari per la fase dell‟allattamento, tiralatte, ecc. Prodotti per l’igene Gran parte dei prodotti di questa categoria riguardano l‟igene personale e quella dentaria. Veterinaria I prodotti per l‟automedicazione degli animali. Già prima della richiesta specifica di realizzazione dell‟interfaccia, la Farmacia Blasi, disponeva di un portale web attivo utilizzato per il commercio elettronico di 4 INTRODUZIONE ____________________________________________________________________ parafarmaci. Questo portale era stato realizzato utilizzando il CMS osCommerce, ma, successivamente, hanno deciso di impiegare il CMS, Zen Cart che ultimamente sta avendo un notevole successo da parte degli utilizzatori e dagli sviluppatori che fanno parte del mondo dell‟e-commerce. La necessità di un interfaccia di questo tipo deriva dall‟esigenza oltre che di migliorare la vendita online di parafarmaci, ovvero di velocizzare e ottimizzare la ricerca di informazioni presenti nel web legate alle caratteristiche dei parafarmaci, di fornire delle valide indicazioni che potranno essere utilizzate per la determinazione del prezzo di vendita di un prodotto. La scelta del prezzo con cui vendere un prodotto è sempre un aspetto delicato per qualsiasi impresa, sia per quelle che operano nel mercato tradizionale e sia per quelle che operano nel mercato elettronico. Il prezzo di un prodotto che può essere venduto online richiede molta trasparenza poiché chi deve acquistare, prima di decidere, ha la possibilità di vistare attraverso l‟aiuto di agenti intelligenti, motori di ricerca, cataloghi ed indici elettronici, parecchi siti in grado di fare offerte di prodotti similari oppure degli stessi prodotti aventi però prezzi di vendita diversi. Il prezzo è tenuto sotto particolare controllo dal cliente, quindi eventuali differenze se non giustificate da più alto livello qualitativo, migliore servizio, marchio e immagine aziendale, non potrebbero da lui accettati e quindi si rivolgerà a quella offerta ritenuta conforme ed in linea con l‟esame fatto. 5 INTRODUZIONE ____________________________________________________________________ Struttura della Tesi Il primo capitolo della tesi offre la descrizione delle specifiche che l‟interfaccia da progettare deve soddisfare. In particolare, dato che le specifiche del progetto da realizzare sono ottenute come il risultato dell‟analisi di due siti Web che sono stati forniti dall‟utilizzatore dell‟interfaccia, in questo capitolo si parlerà anche degli aspetti fondamentali che caratterizzano l‟analisi di un sito Web. Successivamente, invece, verranno descritti i risultati ottenuti attraverso l‟applicazione dei metodi di analisi, precedentemente esposti, ai due siti web che sono stati forniti. Nel successivo capitolo vengono elencati gli strumenti necessari per la realizzazione del progetto. Per ogni strumento si descriverà i requisiti di sistema e le configurazioni software necessarie affinché esso possa funzionare in maniera corretta. Il terzo capitolo tratta la progettazione e la realizzazione dell‟ interfaccia, descrivendo in maniera accurata tutte le fasi essenziali per il raggiungimento dell‟obiettivo. Il quarto capitolo della tesi offre una panoramica sul significato del termine e-commerce e di come le imprese si sono organizzate in seguito al suo sviluppo. Inoltre, viene introdotto il concetto di CMS con lo scopo di fornire delle utili informazioni che potranno essere utilizzate per effettuare un confronto tra i due CMS, ad oggi, più utilizzati per la realizzazione di portali e-commerce: Zen Cart ed osCommerce. I due CMS vengono descritti in maniera dettagliata, riportando anche delle operazioni di test in modo da poter effettuare una comparazione più accurata. Infine nelle conclusioni, sono esposti i risultati del confronto tra i due CMS: Zen Cart e osCommerce, le possibili applicazioni e gli sviluppi futuri relativi al progetto realizzato. 6 CAPITOLO 1– SPECIFICHE DI PROGETTO ____________________________________________________________________ CAPITOLO 1 – SPECIFICHE DI PROGETTO 1.1 Introduzione Si descrivono ora in dettaglio le specifiche seguite nella realizzazione del progetto, ricordando che l‟obiettivo finale è quello di realizzare un interfaccia che verrà utilizzata dalla Farmacia Blasi Dott. Giuseppe con sede a Monsampietro Morico (FM), per prelevare delle informazioni dalle schede tecniche dei prodotti parafarmaceutici presenti in alcuni siti web in modo che esse, successivamente, possono essere utilizzate per il commercio elettronico degli stessi. Per determinare le specifiche di base che devono essere rispettate nella fase di progettazione, è stato necessario effettuare un incontro con i richiedenti ,ed allo stesso tempo utilizzatori dell‟interfaccia, e cioè con i responsabili della Farmacia Blasi Dott. Giuseppe. L‟incontro è avvenuto del mese di ottobre 2010. La richiesta forniteci è stata quella che al fine di potenziare il loro portale e-Commerce di parafarmaci, è necessario avere a disposizione delle opportune informazioni, che permetteranno sia di commercializzare un nuovo prodotto e sia di stabilire il prezzo di vendita dello stesso in modo che non sia venduto con un prezzo maggiore rispetto a quello proposto dalla concorrenza. L‟incontro è avvenuto del mese di ottobre 2010 e la richiesta della Farmacia Blasi Dott. Giuseppe è stata quella che al fine di potenziare il loro portale e-Commerce di parafarmaci, è necessario avere a disposizione delle opportune informazioni, che permetteranno sia di commercializzare un nuovo prodotto e sia di stabilire il prezzo di vendita dello stesso in modo che non sia venduto con un prezzo maggiore rispetto a quello proposto dalla concorrenza. I siti web dai quali estrapolare le informazioni richieste sono: http://www.saninforma.it/ http://www.parafarmacia.it 7 CAPITOLO 1– SPECIFICHE DI PROGETTO ____________________________________________________________________ In questo capitolo verrà spiegato in cosa consiste l‟analisi di un sito web da un punto di vista generale, per poi passare all‟analisi dettagliata dei due siti web nei quali si andrà a prelevare le informazioni. Quest‟ ultima risulterà essere fondamentale per delineare le specifiche su cui si baserà il progetto. 1.2 Analisi di un sito Web In generale un sito web, può essere definito come un medium strumentale attraverso il quale si esplica un processo informativo. Il supporto dei messaggi che esso fornirà al visitatore del sito, si basa su una rappresentazione digitale dei vari media semiotici, le cui espressioni si intrecciano in maniera variegata. A differenza di altri media (come ad esempio la carta stampata), alcune caratteristiche espressive di un sito e persino del suo contenuto sono determinate dal fruitore nel momento in cui avviene la fruizione. Da un punto di vista informatico,invece, un sito può essere definito come un insieme di pagine web collegate tra di loro da riferimenti ipertestuali (detti hyperlink). Nel Web il passaggio da un hyperlink all‟altro si compie attraverso un processo paragonabile ai modi del pensiero umano, che procede da un concetto all‟altro, per progressiva associazione. Ne consegue che i percorsi associativi possibili sono molteplici, spesso soggettivi, o almeno di una soggettività condivisa tra un gruppo di utenti con medesimi presupposti culturali o sociali. Un sito può essere organizzato secondo diversi tipi di strutture, cioè le pagine web che costituiscono un sito possono essere collegate tra loro in modi differenti. Le strutture possibili sono le seguenti: Strutture lineari in cui le pagine sono disposte sequenzialmente l‟una dopo l‟altra come in un libro. Le strutture lineari possono essere semplici o complesse, dove queste ultime presentano una o più ramificazioni. Strutture gerarchiche, il tipo più utilizzato sul web,in cui le informazioni sono suddivise gerarchicamente, in ordine di importanza,e, man mano che si naviga nel sito, si entra in pagine il cui argomento e via via più circoscritto. 8 CAPITOLO 1– SPECIFICHE DI PROGETTO ____________________________________________________________________ Di solito si parte da un home page e, attraverso link, si arriva ad altre pagine, in cui sono trattati gli argomenti principali del sito e si possono trovare nuovi link a pagine che contengono sottoargomenti. Reti, in cui non c‟è un ordine preciso: il visitatore del sito organizzato secondo questa struttura ha estrema libertà di muoversi come meglio crede all‟interno del sito senza seguire un percorso predefinito. Strutture complesse, costituite dall‟unione di più strutture viste in precedenza. Prima della progettazione dell‟interfaccia, si è cercato di analizzare in maniera dettagliata la struttura dei due siti dai quali si andrà ad estrapolare le informazioni Nella fase di analisi di un sito è necessario dare delle risposte alle seguenti domande: o Qual è il contenuto del sito? o Com’è strutturato il sito? o Come avviene la navigazione all’interno del sito?. Le risposte alle prime due domande sono tra loro correlate; infatti i contenuti e la struttura di un sito si definiscono reciprocamente. La suddivisione e la categorizzazione delle pagine (la struttura) è necessariamente determinata dal contenuto, ed il modo in cui viene organizzato il contenuto di un sito, determina l‟ossatura del processo di strutturazione. Per quanto invece riguarda la navigazione all’interno del sito, questa permette di determinare il modo in cui avviene l‟interazione tra il visitatore ed i contenuti del sito. In particolare, per descrivere questa iterazione, è importante tenere a mente il concetto di “flusso”: esso indica essenzialmente con quanta facilità l‟utente può trovare le informazioni di cui ha bisogno spostandosi da una parte del sito a quella successiva . Per ognuno dei due siti che sono stati forniti, verrà fatta un‟analisi accurata che permetterà di ottenere delle valide risposte alle tre domande precedenti in modo da delineare quelle che sono le specifiche che il progetto da realizzare deve rispettare. 9 CAPITOLO 1– SPECIFICHE DI PROGETTO ____________________________________________________________________ 1.2.1 Analisi del Sito www.saninforma.it 1.2.1.1 Contenuto del sito Fig. 1-1- Logo di Saninforma Saninforma.it è un sito e-commerce dinamico che si occupa della vendita di parafarmaci esclusivamente al consumatore finale. Sono presenti i prodotti di più di 260 case farmaceutiche per un totale di circa 3250 prodotti . Essi sono classificati in: Prodotti per la bellezza Prodotti per il benessere e sport Prodotti per il bambino Prodotti per l’igene Sia le marche che i prodotti vengono aggiornati con regolarità. Per aggiornamento delle marche si intende la modifica del nome oppure della disponibilità, cioè se tutti i prodotti di una casa farmaceutica non vengono più “commercializzati” nel portale. Per aggiornamento dei prodotti,invece, si intende: la modifica del nome o la modifica del prezzo di vendita o la modifica della descrizione o la modifica della disponibilità del prodotto (ovvero se un prodotto non è più disponibile per la vendita online) Come la maggior parte dei portali e-commerce, è possibile effettuare uno o più ordini aggiungendo dei prodotti all‟interno di un carrello elettronico. 10 CAPITOLO 1– SPECIFICHE DI PROGETTO ____________________________________________________________________ Le modalità per il pagamento degli ordini effettuati dal cliente, sono tra quelle più comuni nel Web e consistono in: Pagamento con Carta di credito e PayPal: pagamento direttamente dal sito, al momento dell'ordine. Pagamento con Contrassegno: pagamento in contanti, al momento della consegna (costo aggiuntivo del servizio Euro 3,60). Pagamento con Bollettino postale e Bonifico bancario: pagamento da effettuare dopo aver ricevuto i prodotti (entro 10 giorni). All'interno del pacco, troverai la fattura e il bollettino postale già compilato. Inoltre, Saninforma offre: Tutela completa della privacy del cliente (i dati sono trattati in base all‟Art.13 D.Lgs. 30 Giugno 2003, n.196)per laTutela della riservatezza dei dati personali ) Sicurezza dei pagamenti con carta di credito, in quanto le transizioni attraverso la carta di credito è gestita da una banca e non dal sito stesso. Fatturazione degli ordini effettuati 11 CAPITOLO 1– SPECIFICHE DI PROGETTO ____________________________________________________________________ 1.2.1.2 Struttura del sito Il sito Saninforma ha una struttura gerarchica basata su 3 livelli, infatti partendo dalla Home Page (Fig. 1-2) si possono raggiungere le pagine di primo livello, da queste le pagine di secondo livello e da queste ultime è possibile arrivare alle pagine di terzo livello. Fig. 1-2- Home page sito www.saninforma.it All‟interno di ogni pagina di primo livello (Fig. 1-3) è presente un insieme di nomi che stanno ad indicare delle sottocategorie di prodotti e ad ogni sottocategoria di prodotti corrisponde una pagina di secondo livello. 12 CAPITOLO 1– SPECIFICHE DI PROGETTO ____________________________________________________________________ Fig. 1-3- Visualizzazione di una pagina di primo livello nel sito www.saninforma.it Tutte le pagine di secondo livello (Fig. 1-4) sono strutturate in maniera simile, infatti esse contengono la lista di uno o più prodotti, dove ogni prodotto è individuato da: una foto, un nome, una breve descrizione, il prezzo di vendita e 2 pulsanti che permettono di aggiungere il prodotto al carrello elettronico o ai preferiti. Fig. 1-4 -Visualizzazione di una pagina di secondo livello nel sito www.saninforma.it 13 CAPITOLO 1– SPECIFICHE DI PROGETTO ____________________________________________________________________ Ciccando il nome di un prodotto presente all‟interno di una pagina di secondo livello è possibile accedere alle pagine di terzo livello (Fig. 1-5), che sono delle pagine statiche le quali, per ogni prodotto oltre a fornire le informazioni presenti nella pagina di secondo livello, fornisce delle informazioni aggiuntive come la modalità d‟uso, gli ingredienti che lo compongono, le avvertenze ecc. Fig. 1-5- Visualizzazione di una pagina di terzo livello nel sito www.saninforma.it 14 CAPITOLO 1– SPECIFICHE DI PROGETTO ____________________________________________________________________ La struttura del sito di Saninforma può essere graficamente rappresentata con un diagramma ad albero come in figura: Fig. 1-6-Mappa sito www.saninforma.it 1.2.1.3 Navigazione all’interno del sito Le varie pagine del sito www.saninforma.it possono essere visitate attraverso un sistema di navigazione globale, infatti,nella parte superiore della Home Page è presente un menù orizzontale costituito da link, attraverso i quali è possibile accedere alle pagine di primo livello. Questa barra rimane sempre presente anche se si accede alle pagine di secondo e terzo livello quindi tutte le pagine del sito hanno lo stesso layout della Home Page. Nelle pagine di secondo livello sono presenti dei link (corrispondenti ai nomi dei prodotti) che permettono di accedere alle pagine di terzo livello. Quindi oltre ad essere presente una navigazione globale, in queste pagine è presente una struttura di navigazione locale basata su dei link. 15 CAPITOLO 1– SPECIFICHE DI PROGETTO ____________________________________________________________________ Inoltre, in qualsiasi pagina del sito, nella parte in alto a sinistra dell‟area del contesto (ovvero nella zona della pagina in cui sono contenute tutte quelle informazioni che variano a seconda della pagina che si sta visitando) è presente un percorso costituito da link (Fig. 1-7) che permette in qualsiasi istante, di sapere la pagina che stai visitando, di tornare alla pagina che hai visitato precedentemente e tornare alla Home Page: Fig. 1-7- Percorso costituito da link all’interno della pagina web 16 CAPITOLO 1– SPECIFICHE DI PROGETTO ____________________________________________________________________ 1.2.2 Analisi del Sito www.parafarmacia.it 1.2.2.1 Contenuto del sito Logo di Parafarmacia.it Parafarmacia.it è un negozio online per la vendita di prodotti parafarmaceutici. Nel portale è possibile trovare più di 3000 prodotti appartenenti a più di 300 case farmaceutiche. I prodotti sono classificati nelle seguenti categorie: Animali Bambini Bellezza Igene Integratori e Alimentari Salute e Benessere Anche in questo portale l‟aggiornamento della marche e dei prodotti vengono effettuati periodicamente. L‟aggiornamento delle marche e dei prodotti è lo stesso a quanto riportato in 1.2.1.2 con la differenza che per i prodotti di questo portale, non è possibile modificare la descrizione in quanto essi non la possiedono. Anche in questo portale e-commerce è possibile effettuare uno o più ordini aggiungendo dei prodotti all‟interno di un carrello elettronico. 17 CAPITOLO 1– SPECIFICHE DI PROGETTO ____________________________________________________________________ Le varie modalità di pagamento degli ordini effettuati dal cliente sono le seguenti: Carte di credito PayPal PostePay Bonifico bancario In contanti presso tutti gli uffici postali abilitati PostePay o in contanti se si và a ritirare gli acquisti personalmente Non è prevista la modalità di pagamento in contrassegno. Inoltre, Parafarmacia offre: Trattamento dei dati con correttezza e buon senso Se il costo dell‟ordine effettuato è uguale o supera i 70 euro, il costo di spedizione in Italia è gratuito Gli ordini effettuati sono pronti per la spedizione nel giro di poco tempo, di norma dentro un giorno lavorativo. 1.2.2.2 Struttura del sito Il portale Parafarmacia.it presenta una struttura gerarchica basata su 3 livelli. Dalla Home Page (Fig. 1-8) è possibile scegliere una categoria di prodotti, dove per ogni categoria corrisponde una pagina di primo livello (Fig. 1-9). All‟interno di ogni pagina di primo livello, sono presenti dei link cliccabili che stanno ad indicare le sottocategorie della categoria selezionata. 18 CAPITOLO 1– SPECIFICHE DI PROGETTO ____________________________________________________________________ Fig. 1-8 -Home Page sito www.parafarmacia.it Fig. 1-9- Pagina di primo livello all’interno del sito www.parafarmacia.it Ad ogni link cliccabile corrisponde una pagina di secondo livello (Fig. 1-10) nelle quali sono contenute le informazioni relative ai prodotti che appartengono ad una sottocategoria. 19 CAPITOLO 1– SPECIFICHE DI PROGETTO ____________________________________________________________________ Tutte le pagine di secondo livello sono strutturate allo stesso modo, infatti contengono la lista di uno o più prodotti dove ogni prodotto è individuato da: una foto, un nome, e il prezzo di vendita . Fig. 1-10- Screenshot pagina di secondo livello nel sito www.parafarmacia.it Cliccando il nome di un prodotto presente all‟interno di una pagina di secondo livello è possibile accedere alle pagine di terzo livello (Fig. 1-11), dove per ogni prodotto oltre a fornire le informazioni presenti nella pagina di secondo livello, è presente un pulsante che permette di aggiungerlo (dopo averne scelto la quantità) al carrello elettronico ed una lista in cui sono presenti i nomi dei prodotti aventi gli stessi principi attivi del prodotto in questione (prodotti simili). 20 CAPITOLO 1– SPECIFICHE DI PROGETTO ____________________________________________________________________ Fig. 1-11- Esempio di pagina di terzo livello nel sito www.parafarmacia.it Il diagramma ad albero che rappresenta la struttura del portale di Parafarmacia è il seguente: Fig. 1-12-Mappa del sito www.parafarmacia.it 21 CAPITOLO 1– SPECIFICHE DI PROGETTO ____________________________________________________________________ 1.2.2.3 Navigazione all’interno del sito La navigazione tra le pagine che costituiscono il portale di Parafarmacia.it viene effettuata attraverso un sistema di navigazione globale, infatti nella parte superiore della Home Page è presente un menù orizzontale costituito da link cliccabili, attraverso i quali è possibile accedere alle pagine di primo livello. Il menù orizzontale in alto alla Home Page rimane sempre presente, anche se si accede alle pagine di livelli inferiori,quindi è possibile dire che tutte le pagine che costituiscono il portale di Parafarmacia hanno lo stesso layout della Home Page. Nelle pagine di secondo livello, le immagini ed i nomi dei prodotti sono dei link cliccabili che permettono di accedere alle pagine di terzo livello, quindi oltre ad essere presente una navigazione globale nelle pagine di secondo livello è presente una struttura di navigazione locale basata su dei link. Anche in questo sito tutte le pagine web che lo costituiscono mostrano nella parte in alto a sinistra un percorso costituito da link (Fig. 1-13) che permette in qualsiasi istante, di sapere la pagina che stai visitando, di tornare alla la pagina che hai visitato precedentemente e tornare alla Home Page: Fig. 1-13- Pagina Web con in evidenzia il percorso cliccabile (evidenziato in rosso) 22 CAPITOLO 1– SPECIFICHE DI PROGETTO ____________________________________________________________________ Specifiche di base I due siti, come già detto, sono entrambi portali per la vendita online di prodotti parafarmaceutici. Le informazioni che si andranno a prelevare dal loro contenuto, per la realizzazione dell‟interfaccia richiesta, non sono altro che delle caratteristiche dei parafarmaci. Per raggiungere l‟obiettivo richiesto è necessario memorizzare in un opportuno database (un insieme di archivi collegati secondo un particolare modello logico), tutti i prodotti presenti all‟interno di ogni sito, dove per ogni parafarmaco è necessario tener traccia dei seguenti elementi: Il Nome Una descrizione, se disponibile (nel sito di Saninforma è presente una descrizione per ogni prodotto, mentre nel sito di Parafarmacia le descrizioni dei prodotti non sono presenti) Un link che, cliccandolo, permette di accedere alle informazioni aggiuntive del prodotto (come per esempio la modalità d‟uso, la composizione, ecc.) Casa Farmaceutica che lo ha prodotto Il Prezzo di vendita al cliente La conoscenza del nome delle case farmaceutiche produttrici di parafarmaci è molto importante in quanto consente di distinguere i parafarmaci in base ai loro produttori. In particolare, in entrambi i siti è presente un “motore di ricerca interno” che consente di visualizzare tutti i prodotti di una casa farmaceutica dopo averla selezionata da un menù a tendina. Dato che il prezzo di vendita di un prodotto può variare in maniera più o meno frequente, è stato inoltre richiesto di creare uno “Storico Prezzo”, ovvero di memorizzare per ogni specifico prodotto il prezzo di vendita e la data in cui quel prodotto è venduto a quel prezzo. In questo modo è possibile determinare l‟ andamento nel tempo del prezzo di vendita di ogni singolo prodotto. 23 CAPITOLO 2– STRUMENTI UTILIZZATI ____________________________________________________________________ CAPITOLO 2 – STRUMENTI UTILIZZATI 2.1 Introduzione Al fine di realizzare il nostro progetto, vengono utilizzati i seguenti strumenti: Server con sistema operativo Windows 7 (http://windows.microsoft.com) Pacchetto XAMPP 1.7.4 per piattaforma Windows (http://apachefriends.org/en/xampp-windows.html) Zen Cart 1.3.9 in Italiano (http://www.zencart.it/download/viewcategory/14-zen-cart-italiano) Aptana Studio 3.0.2 (http://www.aptana.com/products/studio3/download) Web Browser Mozilla Firefox 5.0 it (http://www.mozilla.com/it/firefox/) Le versioni dei software sopraelencati e, tutte quelle che verranno utilizzate per la realizzazione di questo progetto, rappresentano le versioni recenti disponibili al momento della stesura della tesi. 2.2 Pacchetto XAMPP 2.2.1 In Cosa consiste? Nello sviluppare siti web o applicazioni basati su siti web è conveniente lavorare in in locale (ovvero lo stesso computer svolgerà contemporaneamente sia il ruolo di Server e sia di Client): e trasferire il tutto sul server remoto solo una volta che si è ottimizzata la configurazione per lo scopo che ci si è prefissati. Ciò permette di avere una maggiore velocità, poiché non sarà necessario operare sul server trasferendo i file ogni volta che è necessario apportare qualche modifica e perché non si hanno restrizioni imposte dai limiti di banda. 24 CAPITOLO 2– STRUMENTI UTILIZZATI ____________________________________________________________________ Una volta terminato il progetto, si potrà effettuare l‟upload di tutto il lavoro svolto su di un server, su cui saranno stati precedentemente installati gli strumenti citati in precedenza: in questo modo, l‟interfaccia implementata potrà lavorare online. Per poter sviluppare in locale è necessario avere a disposizione i seguenti software Web Server Apache 2.2.17 (www.apache.org) PHP 5.3.5 (www.php.net) Database MySQL 5.5.8 Community Server (www.mysql.com) Per semplificare il processo di installazione e configurazione è possibile procurarsi il pacchetto XAMPP che contiene tutti i software precedenti (ed alcuni altri:) già configurati per le esigenze più comuni. 2.2.2 Web Server Apache Un web server è un programma molto semplice. Accetta una connessione su una porta specifica, gestisce le richieste da parte dei client ed invia una risposta. A livello più elementare un web server crea semplicemente un file collocato in una posizione specifica all‟interno del file system. Fig. 2-1-Rappresentazione di come si interagisce nel WEB I web server sono stati sviluppati per incorporare molte altre funzioni come la possibilità di attivare script in diversi linguaggi, l‟interazione con i database, la fornitura di autenticazioni, le connessioni criptate e l‟esecuzione di procedure di ogni tipo. 25 CAPITOLO 2– STRUMENTI UTILIZZATI ____________________________________________________________________ Apache è il web server leader su Internet, ma non solo: è uno dei principali progetti Open Source (Open Source indica un software i cui autori,più precisamente i detentori dei diritti, ne permettono, anzi ne favoriscono il libero studio e l'apporto di modifiche da parte di altri programmatori indipendenti. Questo è realizzato mediante l'applicazione di apposite licenze d‟uso). Circa il 70% di siti Web utilizza qualche versione di Apache; questo perché Apache è gratuito, supporta i linguaggi: PERL, PHP, ASP, ISAPI e d offre dei validi supporti per molte tecnologie web. Inoltre si può configurare su molti sistemi operativi, compresi Windows e Max OS X. Apache ha una vasta gamma di strumenti per la configurazione e può contare sul supporto di molte persone esperte. Il Web Server Apache presenta un'architettura modulare, quindi ad ogni richiesta del Client vengono svolte funzioni specifiche da ogni modulo di cui è composto, come unità indipendenti. Ciascun modulo si occupa di una funzionalità, ed il controllo è gestito dal core. Fig. 2-2-Architettura del Web Server Apache I moduli sono: Core: programma principale composto da un ciclo sequenziale di chiamate ai moduli. Translation: traduce la richiesta del client Acces Control: controlla eventuali richieste dannose MIME Type: verifica il tipo di contenuto Response: invia la risposta al client e attiva eventuali procedure Logging: tiene traccia di tutto ciò che è stato fatto 26 CAPITOLO 2– STRUMENTI UTILIZZATI ____________________________________________________________________ Il core suddivide la richiesta ai vari moduli in modo sequenziale, usando i parametri di uscita di un modulo come parametri di accesso per l'altro, creando così l'illusione di una comunicazione orizzontale fra i moduli Sopra il ciclo del core c'è un ulteriore ciclo di polling svolto da un processo demone (è un processo che non è associato a un terminale di controllo e fornisce un servizio)che interroga continuamente le linee logiche da cui possono pervenire messaggi di richiesta. L‟ultima versione di Apache Web Server è la 2.2.19 distribuita dal 22 maggio 2011. 2.2.3 Database MySQL La maggior parte dei servizi disponibili sul Web è fornita da applicativi basati su database. Posta elettronica via web, shopping online, forum, siti aziendali ecc. sono tutti servizi gestiti da Database; quindi per costruire un sito web all‟avanguardia è necessario sviluppare un applicativo con database. Il DBMS (Database Management System) più comune in queste soluzioni è MySQL (chiamato più correttamente Relational Database Management System o RDBMS in quanto è un DBMS basato sul modello relazionale); esso è. un sistema estremamente rapido e facile da utilizzare, distribuito sotto la licenza Open Source dalla società che lo ha sviluppato MySQLAB. 2.2.4 PHP Un Web Server come Apache e MySQL sono tutto ciò che è necessario per sviluppare un applicativo Web con database. Quello che manca è un collante per far “parlare” il Web Server con il database o, in altre parole, un modo per incorporare le operazioni del database nelle pagine web . Il collante più famoso per portare a termine questo compito è PHP. 27 CAPITOLO 2– STRUMENTI UTILIZZATI ____________________________________________________________________ PHP è un linguaggio di programmazione completo (full function) lato server che genera un contenuto dinamico, ossia che cambia in funzione alla richiesta del client. Essendo un linguaggio interamente lato server, una volta che il client richiede una pagina, le istruzioni PHP vengono elaborate, sostituite con del codice HTML (l‟output di tale operazione), ed inviate al client (che dunque non si vedrà mai recapitare neanche una riga di codice PHP). 28 CAPITOLO 2– STRUMENTI UTILIZZATI ____________________________________________________________________ 2.2.5 Installazione del Pacchetto XAMMP Prima di installare XAMMP bisogna abilitare le seguenti porte nel firewall del computer in modo da non consentire l‟accesso ad altre macchine in rete: PORTA PROTOCOLLO SOFTWARE 80 HTTP Apache Web Server 3306 MySQL MySQL Database Server 25 SMTP Mercury Mail Server 110 POP Mercury Mail Server Tabella 2-1-Porte da abilitare nel firewall prima di procedere all’installazione di XAMPP Una volta abilitate le porte nel firewall è possibile iniziare l‟installazione di XAMPP. Per fare questo: Si lancia il file con estensione .exe scaricato dall‟link indicato in precedenza. Si deve scegliere una cartella per installare XAMPP nel campo Cartella di destinazione e cliccare installa. Una volta completata l‟installazione, nella cartella in cui è installato XAMPP, si avrà una struttura di cartelle simile a quella in figura. Fig. 2-3-Struttura della cartella di XAMPP 29 CAPITOLO 2– STRUMENTI UTILIZZATI ____________________________________________________________________ 2.2.6 Esecuzione XAMPP Per mandare in esecuzione XAMPP bisogna eseguire i seguenti passi: 1. Dal menù Windows cliccare: apachefriends>xampp>CONTROL XAMPP SERVER PANEL, in modo che si apra un pannello di controllo come quello in figura. Fig. 2-4-Pannello di controllo di XAMPP 2. Per mandare in esecuzione i programmi Apache e MySql, cliccare sui rispettivi bottone Start, in modo da ottenere la seguente configurazione: Fig. 2-5-Abilitazione dei servizi Apache e MySQL nel pannello di controllo di XAMPP 3. Aprendo il browser all'indirizzo http://localhost/xampp, dove in informatica localhost è il nome associato all‟indirizzo 127.0.0.1 che può essere usato dalle applicazioni per comunicare con lo stesso sistema su cui sono in 30 CAPITOLO 2– STRUMENTI UTILIZZATI ____________________________________________________________________ esecuzione, comparirà la pagina di controllo di XAMPP da cui sarà possibile accedere ad alcuni servizi come phpMyAdmin. Fig. 2-6-Pagina iniziale di XAMPP A questo punto si ha a disposizione tutto ciò che è necessario per sviluppare un applicativo Web con database 31 CAPITOLO 2– STRUMENTI UTILIZZATI ____________________________________________________________________ 2.3 Aptana Studio 3.0.2 Aptana Studio è un IDE (ambiente di sviluppo integrato) professionale per lo sviluppo di applicazioni web e siti. Aptana è un software rilasciato con licenza open source (GNU General Public License): può essere scaricato gratuitamente e utilizzato liberamente anche per scopi commerciali. ed è disponibile per Linux, Mac e Windows. Si tratta di una soluzione molto completa che affianca strumenti per lo sviluppo di applicazioni Web a servizi nline di collaborazione ed hosting. Gli strumenti disponibili attraverso Aptana sono numerosi e possono essere riassunti in questo elenco digitare codice HTML, CSS e JavaScript in modo assistito, per la creazione di fogli di stile CSS vengono anche forniti dei suggerimenti dal programma stesso e per il markup HTML sono disponibili tutte le proprietà e gli elementi; supporto per l'evidenziazione della sintassi dei codici tramite colorazione; auto-completamento del codice in sede di sviluppo per velocizzare la digitazione del listato; strumenti per la creazione e la gestione di progetti all'interno dei quali sviluppare pagine e applicazioni, include un sistema di visualizzazione per tener traccia delle gerarchie e dei percorsi di file, cartelle e sottocartelle; strumenti integrati per il debugging di applicazioni JavaScript grazie all'integrazione di Firedebug con Firefox, la versione Pro di Aptana consente anche di effettuare procedure di debugging su Internet Explorer; disponibilità di strumenti per l'interazione con i database relazionali, sia in locale che in remoto; supporto completo per il trasferimento di file da locale a remoto e viceversa, l'applicazione potrà essere utilizzata anche come client FTP per l'upload dei propri progetti in Rete o per il download di file in locale; 32 CAPITOLO 2– STRUMENTI UTILIZZATI ____________________________________________________________________ grande disponibilità di plug-in per l'estensione delle funzionalità già previste dal core dell'applicazione. La versione di Aptana Studio usata per lo sviluppo del progetto è la 3.0.2 ed è disponibile tramite il seguente link: http://www.aptana.com/products/studio3/download. 2.4 Web Browser Mozilla Firefox 5.0 it I browser sono Client che usano un‟interfaccia grafica per visualizzare i documenti contenuti nei siti del World Wide Web. Sono costituiti da un nucleo software principale che implementa le funzioni di base (interazione http, interpretazione codice HTML, XML, JavaScript, esecuzione programmi Java,…); inoltre essi consento l‟accesso a servizi basati su diversi protocolli W3: mail (MAILTO) File Transer (FTP) News (NNTP) Le funzionalità base messe a disposizione da un Browser posso essere estese attraverso l‟uso di Plug-In o Helper,moduli software dedicati alla gestione di particolari tipologie di documenti (testi Pdf, filmati RealPlayer, animazioni Quick Time,…). I Browser più noti e diffusi sono: Internet Explorer Mozilla Safari Opera Lynx Google Chrome 33 CAPITOLO 2– STRUMENTI UTILIZZATI ____________________________________________________________________ Nello sviluppo del progetto è stato utilizzato il web browser Mozilla Firefox 5.0 in italiano. Mozilla Firefox è un web browser open source multipiattaforma prodotto da Mozilla Foundation. Firefox attualmente è il web browser più utilizzato al mondo dopo Internet Explorer. Nello sviluppo del progetto si è scelto di utilizzare Mozilla Firefox perché, oltre ad essere Open Source,offre un compilatore JavaScript molto veloce e fornisce delle funzionalità avanzate legate alle possibilità di espandere le componenti; infatti esistono numerosi Plug-In aggiuntivi che possono essere utilizzati per arricchire le funzionalità di Firefox. Una volta terminato, il progetto è stato testato utilizzando, anche, i browser Internet Explorer e Google Chrome in quanto il primo è quello più utilizzato dai “navigatori del web”, mentre il secondo è un browser che sta avendo un notevole successo per quanto riguarda la sua popolarità. 34 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ CAPITOLO 3 –PROGETTAZIONE e REALIZZAZIONE 3.1 Introduzione In questo capitolo vengono descritti in dettaglio tutti i passi da seguire per la progettazione e la realizzazione dell‟interfaccia, rispettando le specifiche di progetto. Tramite l‟analisi dei due siti svolta ( vedi CAPITOLO 1), si è in grado di determinare quali sono le informazioni da ricercare ed in quali pagine del sito ricercarle; in modo da garantire il raggiungimento dell‟obiettivo che ci siamo proposti . Sia il portale di Saninforma che quello di Parafarmacia, come tutti i siti e portali web, sono scritti in HTML e quindi le informazioni da prelevare dal loro interno sono contenute tra dei tag o marcatori HTML, dove un marcatore è generalmente una parola racchiusa tra parentesi angolate < >. Per questo motivo vengono implementati degli algoritmi che vanno ad effettuare particolari ricerche nel codice sorgente di ogni opportuna pagina web del sito. Affinché questo possa essere effettuato però, è necessario avere a disposizione il sorgente HTML di ogni pagina. Quindi, il primo passo è quello di creare una funzione che, fornito l‟indirizzo di una pagina web (URL o Uniform Resource Locator ovvero una sequenza di caratteri che identifica univocamente l‟indirizzo mnemonico di una risorsa in Internet, come un documento, un'immagine o una pagina web come in questo caso.), permette di ottenere come output il codice HTML della stessa. Successivamente, avendo a disposizione il codice HTML è possibile implementare degli algoritmi che permetto di effettuare delle specifiche ricerche all‟interno del codice stesso. Infine, una volta che si hanno a disposizione tutte le informazioni desiderate, esse possono essere memorizzate in un‟ opportuna base dati. Tutti gli algoritmi implementati sono scritti utilizzando il linguaggio PHP (Hypertext Processor). La scelta di questo tipo di linguaggio è stata scaturita prima di tutto 35 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ perchè il PHP è un linguaggio di scripting per il web progettato proprio per risolvere ”i problemi legati al web”, in secondo luogo perché è un linguaggio che è stato trattato durante il percorso didattico ed infine perché il PHP fornisce una grande quantità di funzioni e applicazioni Open Source, come ad esempio le funzioni che permettono di interfacciarsi con il database MySQL . 36 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ 3.2 Funzioni PHP utilizzate Il termine funzione sta ad indicare un blocco di codice che può richiedere uno o più parametri in ingresso e può fornire un valore di uscita. PHP mette a disposizione numerose funzioni predefinite, di cui non si hanno sottomano il codice ma risultano molto utili o talvolta indispensabili nella programmazione. Le funzioni PHP predefinite utilizzate nel progetto sono classificate in: o funzioni utilizzate per prelevare il sorgente HTML di una pagina web o funzioni utilizzate per l‟estrapolazione di dati dal codice HTML o funzioni utilizzate per salvare dati all‟interno di un database MySQL Successivamente per ognuna di esse verrà presentata una breve descrizione, la sintassi ed il valore di ritorno. 3.2.1 Ottenimento del sorgente HTML In informatica, una pagina web è definita come un file residente su uno specifico elaboratore che viene chiamato Web Server. Sulla base di questa definizione si intuisce che, una pagina web può essere trattata come un normale file di testo, dove il percorso in cui è memorizzata coincide con l‟URL assoluto. Quest‟ultimo include tutti gli elementi necessari per identificare univocamente una particolare risorsa tra tutte quelle disponibili su Internet. Quindi per ogni pagina web per la quale è noto il suo URL assoluto, possono essere utilizzate tutte quelle funzioni PHP che permetto di elaborare un normale file di testo del quale si è a conoscenza del percorso di memorizzazione. La funzione utilizzata per ottenere il sorgente di una pagina web, conoscendo il suo URL è la funzione file(). 37 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ 3.2.1.1 file() Permette di effettuare la lettura di un file. SINTASSI: array file( string $filename [ int $flags = 0]) filename è il path o URL del file. flags è un parametro opzionale che può essere una, o più, delle seguenti costanti: FILE_USE_INCLUDE_PATH cerca il file nell‟ include_path, FILE_IGNORE_NEW_LINES non aggiunge una nuova linea alla fine di ogni elemento dell‟array, FILE_SKIP_EMPTY_LINES salta le righe vuote. VALORE DI RETURN: Restituisce il file in un array. Ogni elemento dell'array corrisponde ad una riga del file, con il ritorno a capo ancora attaccato. In caso di errore della funzione file () viene restituito il valore FALSE. Dato che, alcuni caratteri hanno significati particolari in HTML, essi devono essere rappresentati tramite entità HTML, se devono mantenere il proprio significato. Per questa ragione, viene utilizzata la funzione htmlspecialchars() 3.2.1.2 htmlspecialchars() Converte i caratteri speciali in entità HTML SINTASSI: String htmlspecialchars ( string string [, int quote_style [, string charset]] ) VALORE DI RETURN: Questa funzione restituisce restituisce una stringa con la conversione di alcuni caratteri particolari; la conversione svolta non è sempre valida nell'ambito della programmazione web 38 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ 3.2.2 Estrapolazione delle informazioni dal sorgente HTML Per l‟estrapolazione delle informazioni dal sorgente HTML di una pagina web vengono implementati degli algoritmi nei quali si utilizzano delle funzioni PHP predefinite basate su espressioni regolari. Le espressioni regolari sono dei particolari costrutti sintattici che permettono di svolgere delle operazioni di pattern matching, cioè servono per rilevare la presenza di un modello o pattern all'interno di una sequenza di caratteri principale. Per pattern si intende una sequenza di caratteri (stringa) costituita secondo specifiche regole sintattiche e semantiche delle espressioni regolari. In PHP esistono due classi di espressioni regolari: le POSIX e quelle compatibili con PERL. Le differenze tra le due espressioni riguardano essenzialmente la sintassi da utilizzare. In questo studio vengono utilizzate le espressioni regolari ti tipo POSIX, il cui pattern è formato da caratteri semplici o da metacaratteri: Caratteri Semplici: rappresentano, e quindi corrispondono, a se stessi. Ciascun carattere semplice in un pattern può essere considerato come un elemento di base della espressione regolare , nel senso che viene ricercato singolarmente all'interno di una sequenza di caratteri principale; Metacaratteri: sono dei caratteri che, all'interno di una stringa, non rappresentano sé stessi bensì un insieme di altri caratteri o sequenze di caratteri. 39 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ Nella tabella successiva ( Tabella 3-1) vengono elencati i metacaratteri utilizzati nello svolgere le operazioni di pattern matching necessarie per l‟estrapolazione di dati dal sorgente HTML di una pagina web. SINTASSI SIGNIFICATO DELL’’ESPRESSIONE REGOLARE . Rappresenta qualsiasi carattere (escluso un acapo) + Indica una o più occorrenze (di un carattere o di un gruppo di caratteri) \ Carattere di escape dei caratteri speciali ^ {} (.+) {} Indica l'inizio della stringa (o, se all'interno di una classe di caratteri, la negazione della stessa) Utilizzato per indicare il numero esatto, o minimo, o massimo, o l'intervallo di occorrenze (di un carattere o di un gruppo di caratteri) Indica qualsiasi carattere ripetuto una o più volte Utilizzato per indicare il numero esatto, o minimo, o massimo, o l'intervallo di occorrenze (di un carattere o di un gruppo di caratteri) È un metacarattere composto perché è formato da una sequenza di caratteri racchiusi tra parentesi quadre. . Da un punto di vista logico, però, tutto ciò [a-z] che è racchiuso fra parentesi quadre è considerato come facente parte di un unico modello. In questo modello è presente un intervallo di caratteri , esso è soddisfatto quando viene trovato uno qualsiasi dei caratteri compresi nell'intervallo; È un metacarattere composto perché è formato da una sequenza di caratteri racchiusi tra parentesi quadre. . Da un punto di vista logico, però, tutto ciò [0-9] che è racchiuso fra parentesi quadre è considerato come facente parte di un unico modello. In questo modello è presente un intervallo di numeri, esso è soddisfatto quando viene trovato uno qualsiasi dei numeri compresi nell'intervallo; Tabella 3-1 – Descrizione delle espressioni regolari utilizzate nel progettazione dell’interfaccia Di seguito sono indicate le funzioni predefinite PHP basate su espressioni regolari che sono state utilizzate per la realizzazione del progetto con lo scopo di prelevare le informazioni desiderate dal sorgente HTML di pagine web. 40 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ 3.2.2.1 preg_match_all() Esegue un riconoscimento globale con le espressioni regolari SINTASSI: int preg_match_all ( string espressione_regolare, string testo, array TestiRiconosciuti [, int flags [, int offset]]) La funzione ricerca tutte le espressioni regolari passate nel parametro espressione_regolare all'interno della stringa testo. I testi riconosciuti sono posti all'interno della matrice TestiRiconosciuti, nell'ordine specificato da flags. Dopo avere riconosciuto il primo segmento di testo, le ricerche seguenti saranno effettuate a partire dall'ultima ricerca specificata. Il parametro flags può essere la combinazione dei seguenti flag (da notare che non ha senso utilizzare PREG_PATTERN_ORDER in unione a PREG_SET_ORDER): PREG_PATTERN_ORDER I testi riconosciuti saranno organizzati in modo tale da avere in $TestiRiconosciuti[0] la matrice di tutti i testi riconosciuti, in $TestiRiconosciuti[1] la matrice di tutti i testi che soddisfino il primo criterio di riconoscimento posto tra parentesi tonde, in $TestiRiconosciuti[2] si avranno i testi che soddisfino il secondo criterio e cosi via. PREG_OFFSET_CAPTURE Se viene impostato questo flag, per ogni testo riconosciuto viene restituito l'offset della stringa. Occorre notare che questo cambia il tipo di valore restituito nell'array, infatti ogni elemento è, a sua volta, un'array composto dalla stringa riconosciuta, all'indice 0, e dall'offset della stringa nell'indice 1. Questa costante è disponibile a partire dalla versione 4.3.0 di PHP. Qualora non si specifichi il parametro flags, si assume per default il valore PREG_PATTERN_ORDER. 41 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ VALORE DI RETURN: La funzione restituisce il numero dei riconoscimenti completi svolti (che possono essere zero), oppure FALSE se si verificano degli errori. 3.2.2.2 preg_match() Riconoscimento con espressioni regolari SINTASSI mixed preg_match ( string criterio, string testo [, array testi_riconosciuti [, int flags [, int offset]]]) Esegue un riconoscimento nel parametro testo utilizzando l'espressione regolare indicata in criterio. Se viene fornito il terzo parametro, testi_riconosciuti, questo verrà valorizzato con i risultati della ricerca. In dettaglio $testi_riconosciuti[0] conterrà il testo che si incrocia con l'intero criterio di ricerca, $testi_riconosciuti[1] conterrà il testo che soddisfa il primo criterio posto tra parentesi, $testi_riconosciuti[2] il secondo e così via. Il parametro flags può assumere i seguenti valori: PREG_OFFSET_CAPTURE Se viene impostato questo flag, per ogni testo riconosciuto viene restituito l'offset della stringa. Occorre notare che questo cambia il tipo di valore restituito nell'array, infatti ogni elemento è, a sua volta, un'array composto dalla stringa riconosciuta, all'indice 0, e dall'offset della stringa nell'indice 1 VALORE DI RETURN: La funzione preg_match() restituisce il numero di volte in cui è avvenuto il riconoscimento del criterio. Questo può essere 0 (nessun riconoscimento) oppure 1 se preg_match() si ferma dopo il primo riconoscimento. In condizioni normali, preg_match_all() continua il riconoscimento fino alla fine del parametro testo. preg_match() restituirà FALSE se si verifica un errore. 42 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ 3.2.2.3 preg_replace() Esegue una ricerca ed una sostituzione con le espressioni regolari SINTASSI: mixed preg_replace ( mixed espressione_regolare, mixed sostituto, mixed testo [, int limite]) La funzione ricerca in testo i criteri impostati in espressione_regolare. Se riconosce dei testi, li sostituisce con sostituto. Se si specifica limite, verranno sostituiti solamente limite testi riconosciuti; se viene omesso, oppure impostato a -1, verranno sostituiti tutti i testi riconosciuti. VALORE DI RETURN: Se verranno riconosciuti dei testi, la funzione restituisce la nuova versione di testo, altrimenti il parametro sarà restituito inalterato. 3.2.2.4 expolode() Suddivide una stringa SINTASSI: array explode ( string separator, string string [, int limit]) Questa funzione restituisce una matrice di stringhe, ciascuna delle quali è una parte di string ottenuta dividendo la stringa originale utilizzando separator come separatore di stringa. Se si imposta limit la matrice restituita conterrà al massimo limit elementi di cui l'ultimo conterrà la parte restante di string. VALORE DI RETURN: Se il parametro separator è impostato ad una stringa vuota (""), la funzione explode() restituirà FALSE. Se separator contiene caratteri non presenti in string, allora explode() restituirà una matrice contenente string. 43 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ 3.2.3 Memorizzazione delle informazioni in un database Le funzioni PHP utilizzate per memorizzare i dati ed, in particolare, per interagire con il DBMS MySQL sono le seguenti: 3.2.3.1 mysql_connect() Apre (stabilisce)una connessione ad un server MySQL SINTASSI: resource mysql_connect ( [string server [, string nome_utente [, string password [, bool nuova_connessione [, int client_flags]]]]]) I seguenti valore predefiniti sono assunti per i parametri opzionali mancanti: server = 'localhost:3306', nome_utente = nome dell'utente proprietario del processo server e password = password vuota. VALORE DI RETURN: Restituisce un identificativo di connessione MySQL in caso di successo oppure FALSE in caso di fallimento. 3.2.3.2 mysql_close() Chiude una connessione MySQL SINTASSI: bool mysql_close ( [resource identificativo_connessione]) mysql_close() chiude la connessione al server MySQL associata all'identificativo di connessione specificato. Se identificativo_connessione non è specificato, viene usata l'ultima connessione aperta. VALORE DI RETURN: Restituisce TRUE in caso di successo, FALSE in caso di fallimento. 44 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ 3.2.3.3 mysql_ query() Invia una query MySQL SINTASSI: resource mysql_query ( string query [, resource identificativo_connessione [, int modo_risultato]]) Permette di nviare una query al database attualmente attivo sul server associato all'identificativo di conmnessione specificato. Se identificativo_connessione non è specificato, viene considerata l'ultima connessione aperta. Se nessuna connessione è aperta, la funzione prova a stabilire una connessione come se mysql_connect() fosse richiamata senza argomenti ed usa questa. Il paramentro opzionale modo_risultato può essere MYSQL_USE_RESULT e MYSQL_STORE_RESULT. Il valore predefinito MYSQL_STORE_RESULT, così il risultato è bufferato. VALORE DI RETURN: Restituisce TRUE in caso di successo e FALSE in caso di errore. 3.2.3.4 mysql_fetch_row() Ottiene una riga del risultato come un array enumerato SINTASSI: array mysql_fetch_row ( resource risultato) mysql_fetch_row() carica una riga di dati dal risultato associato all'identificativo specificato. La riga è restituita com un array. Ogni colonna del risultato è memorizzata in un indice dell'array, partendo dall'indice 0. VALORE DI RETURN: Restituisce un array che corrisponde ad una riga caricata oppure FALSE se non ci sono più righe. 45 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ 3.2.3.5 mysql_fetch_array() Carica una riga del risultato come un array associativo, un array numerico o entrambi. SINTASSI: array mysql_fetch_array ( resource risultato [, int tipo_risultato]) mysql_fetch_array() è una versione estesa di mysql_fetch_row().Oltre a memorizzare i dati del risultato in array con indice numerico, questa li memorizza anche con indici associativi usando i nomi dei campi come chiavi. VALORE DI RETURN: Restituisce un array che corrisponde alla riga caricata o FALSE se non ci sono più righe. 3.2.3.6 mysql_num_rows() Ottiene il numero di righe in un risultato SINTASSI: int mysql_num_rows ( resource risultato) VALORE DI RETURN: Restituisce il numero di righe in un risultato. Questo comando è valido solo per le istruzioni SELECT 46 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ 3.2.3.7 mysql_result() Ottiene i dati dal risultato SINTASSI: mixed mysql_result ( resource risultato, int campo [, mixed campo]) L'argomento campo può essere l'indice o il nome del campo oppure il nome della tabella ed il nome del campo separati da un punto (nome_tabella.nome_campo). Se il nome della colonna ha un alias ('select foo as bar from...'), usare l'alias al posto del nome della colonna. VALORE DI RETURN: Restituisce i contenuti di una cella da un risultato MySQL. 47 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ 3.3 Algoritmi implementati per la realizzazione dell’interfaccia In questo paragrafo vengono descritti gli algoritmi implementati nella realizzazione dell‟interfaccia finale. Come nel paragrafo precedente, i vari algoritmi vengono classificati in: o Algoritmi implementati per prelevare il sorgente HTML di una pagina web o Algoritmi implementati per l‟estrapolazione di dati dal codice HTML o Algoritmi implementati per salvare dati all‟interno di un database MySQL 3.3.1 Estrazione codice HTML In questo paragrafo verrà descritto l‟ algoritmo implementato per prelevare il sorgente HTML di determinate pagine web che costituiscono i due siti www.saninforma.it e www.parafarmacia.it . I risultati ottenuti nella fase di Analisi dei due siti web, sviluppata nel CAPITOLO 1, permettono di individuare quali sono le pagine web che contengono le informazioni che dovranno essere estrapolate per il raggiungimento dell‟obiettivo finale. In particolare si è a conoscenza dell‟URL assoluto associato a ciascuna di queste pagine, infatti la condizione necessaria affinché l‟algoritmo sviluppato per l‟estrazione del sorgente di una pagina web possa essere applicato, è quella di avere a disposizione l‟URL assoluto di quella pagina web. Questo perchè nell‟implementazione dell‟ algoritmo si fa uso della funzione predefinita PHP file(). 48 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ L‟algoritmo è costituito dalle seguenti istruzioni: Screenshot 3-1 -Codice utilizzato per prelevare l’HTML di una pagina web La funzione file(URL assoluto), (in questo caso l‟URL assoluto coincide con “http://www.parafarmacia.it” che è l‟indirizzo della home page del sito di Parafarmacia), restituisce il codice HTML della pagina in un array che viene memorizzato nella variabile $lines. Ogni elemento dell'array corrisponde ad una riga del file, con il ritorno a capo ancora attaccato. Il ciclo foreach() permette di scorrere l‟array memorizzato nella variabile $lines e tramite l‟istruzione echo htmlspecialchars($lines) è possibile visualizzare a video tutte le righe di codice HTML che costituiscono la pagina web identificata dall‟indirizzo http://www.parafarmacia.it. In questo caso l‟output ottenuto come risultato dell‟algoritmo è il seguente: Screenshot 3-2 -Sorgente HTML della pagina web con URL assoluto: http://www.parafarmacia.it 49 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ Come mostrato nello Screenshot 3-2, il sorgente HTML di una pagina web è costituito da un insieme di tag predefiniti che descrivono gli aspetti relativi alla presentazione del documento: tipi di caratteri, spaziature tra linee, dimensione dei caratteri ecc.. Quindi, le informazioni che noi dovremo estrapolare dal sorgente HTML in modo da realizzare l‟interfaccia richiesta, sono comprese tra dei tag HTML. L‟ algoritmo descritto in precedenza verrà eseguito per ogni URL assoluto associato a ciascuna pagina web nella quale si dovrà prelevare le informazioni necessarie per la realizzazione dell‟interfaccia. 3.3.2 Estrapolazione delle informazioni dal sorgente HTML Una volta disponibile il sorgente HTML delle pagine Web contenti le informazioni che devono essere prelevate, è possibile passare alla fase di estrapolazione in modo tale che, queste informazioni, possono essere successivamente memorizzate in un database. Per effettuare l‟estrapolazione delle informazioni dal codice HTML, sono stati implementati degli algoritmi, in ognuno dei quali vengono utilizzate le funzioni predefinite PHP preg_match_all() e preg_match()(par. 3.2.2.1 e 3.2.2.2), ricordando che esse sono delle funzioni basate sulle espressioni regolari che permettono di ricercare eventuali match all'interno di una stringa utilizzando un pattern . La descrizione delle specifiche di progetto (come mostrato in CAPITOLO 1) ha reso possibile individuare quali sono le informazioni che devono essere estrapolate dal contenuto dei portali Saninforma e Parafarmacia. Queste informazioni riguardano tutto ciò che è necessario per descrivere un prodotto parafarmaceutico e cioè: il nome del parafarmaco, la descrizione (se disponibile) del parafarmaco, un link che, se cliccato, permette di visualizzare maggiori dettagli sul prodotto, il prezzo di vendita, e la casa farmaceutica che lo ha prodotto. 50 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ Inoltre, la fase di analisi dei due siti web (svolta anche essa nel CAPITOLO 1), ha permesso di individuare che in entrambi i siti è presente un “motore di ricerca interno”. Questo permette la visualizzazione di tutti i prodotti di una marca (casa farmaceutica) dopo averne selezionata una da un menù di opzioni. Nel menù di opzioni sono presenti tante voci quante sono le case farmaceutiche produttrici di parafarmaci che sono venduti sul portale. Quindi, per ogni sito in primo luogo si andrà a prelevare tutte le voci che costituiscono il menù di opzioni, ottenendo così la lista completa delle marche presenti sul portale. Successivamente, invece, avendo a disposizione la lista completa delle marche ed utilizzando in maniera opportuna il motore di ricerca interno al sito, sarà possibile visualizzare tutti i parafarmaci di una certa marca e quindi estrapolare le informazioni associate a ciascun parafarmaco. Sulla base di quanto detto, sono state implementate le seguenti funzioni: agg_marchesaninforma() che permette di estrapolare la lista completa dei nomi delle case farmaceutiche produttrici di parafarmaci venduti nel portale di Saninforma. L‟estrapolazione è effettuata dal menù di opzioni contenuto nella pagina web avente URL http://www.saninforma.it/Ricercamarca.jsp agg_marcheparafarmacia()che permette di estrapolare la lista completa dei nomi delle case farmaceutiche produttrici di parafarmaci venduti nel portale di Parafarmacia. L‟estrapolazione è effettuata dal menù di opzioni contenuto nella pagina web avente URL http://www.parafarmacia.it/marche/. aggiornamento_prodotti() ricerca() che consentono di prelevare: nome, descrizione, link e prezzo di vendita di ogni parafarmaco presente nel portale di Saninforma. agg_prodottiparafarmacia() e cerca_prodottiparafarmacia(), che permettono di prelevare: nome, link e prezzo di vendita di ogni parafarmaco presente nel portale di Parafarmacia. 51 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ 3.3.2.1 Funzione agg_marchesaninforma() Una volta a disposizione il sorgente HTML della pagina web contenente il menù di opzioni alle quali ad ognuna corrisponde il nome di una casa farmaceutica (http://www.saninforma.it/Ricercamarca.jsp), si andrà ad “isolare” le singole voci che costituiscono questo menù. Sapendo che, ciascuna voce è compresa tra l‟attributo value del tag <option> ed il tag </option>, si preleverà tutto ciò che è incluso tra : la stringa < option value=’ e il carattere </ option >. Per fare ciò, vengono utilizzate le seguenti righe di codice: Screenshot 3-3-Istruzioni che permetto di prelevare le voci del menù di opzioni dal portale di Saninforma Così facendo, in ogni elemento del vettore $matrix[$i] verrà memorizzata una stringa la quale corrisponde ad una voce del menù di opzioni, seguita dal carattere „ che sta ad indicare la chiusura dell‟attributo value ed il carattere > che consente di chiudere il tag <option>. A questo punto per eliminare i due caratteri: „ e > dalle stringhe memorizzate nel vettore $matrix[], si utilizzano le funzioni predefinite PHP preg_replace() nel seguente modo: Screenshot 3-4-Codice utilizzato per eliminare i caratteri ‘ e > dal nome delle marche di parafarmaci 52 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ Quindi in ogni elemento del vettore $array[] è contenuta una stringa corrispondente al nome della marca di un parafarmaco che viene venduto nel portale di Saninforma, come per esempio: 5 Sense System, A-Derma, Aboca, Adipesina, Akuel, ecc. 3.3.2.2 Funzione agg_marcheparafarmacia() Il ragionamento che ha portato all‟implementazione di questa funzione è lo stesso fatto per la funzione agg_marchesaninforma(). In particolare, dal sorgente HTML della pagina web avente URL http://www.parafarmacia.it/marche/ (corrispondente alla pagina nella quale è presente il menù di opzioni in cui ogni voce del menù corrisponde ad una marca di prodotti parafarmaceutici che sono venduti nel portale di Parafarmacia), si andrà ad estrapolare tutto ciò che è contenuto tra la stringa <strong><a href=’marca e il carattere ‘> utilizzando le seguenti istruzioni: Screenshot 3-5- Istruzioni che consentono di prelevare ciò che è contenuto tra la stringa <strong><a href=’marca e il carattere ‘> In ogni elemento del vettore $matrix[] è contenuto il nome di una casa farmaceutica produttrice di parafarmaci vendibili nel portale di Parafarmacia, come ad esempio: 3 m, a-derma, aboca, adipe-lip, adipesina, advantix ecc. 53 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ 3.3.2.3 Funzioni agg_prodotti() e ricerca() Le funzioni aggiornamento_prodotti() e ricerca(), come già detto, permettono di prelevare: il nome, la descrizione, il link e il prezzo di vendita di ogni parafarmaco vendibile nel portale di Saninforma. Dopo aver utilizzato la funzione agg_marchesaninforma(), ed avendo così a disposizione la lista completa di tutte le marche presenti nel portale all‟interno del vettore chiamato $matrix[], affinché possano essere estrapolate le informazioni appena elencate, si devono seguire le seguenti fasi: 1. servendosi del motore di ricerca per marca interno al portale, è possibile ottenere la lista completa e dettagliata di tutti i prodotti di una marca che sono presenti nel portale. Per fare questo, è sufficiente aggiungere all‟ URL: http://www.saninforma.it/RisultatiRicerca.jsp?ricmarca=si&nuovaricerca= si&marca=, (che identifica la pagina web nel portale Saninforma.it utilizzata per effettuare la ricerca per marca) , il nome della marca di cui visualizzare i prodotti. Per esempio, se all‟URL precedente viene aggiunta la marca Adipesina, si ottiene il seguente URL: http://www.saninforma.it/RisultatiRicerca.jsp?ricmarca=si&nuovaricerca= si&marca=Adipesina. Ad esso corrisponde la pagina web in cui sono elencati tutti i prodotti della casa farmaceutica Adipesina (Screenshot 3-6): 54 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ Screenshot 3-6-Visualizzazione dei prodotti della marca Adipesina nel portale di Saninforma 2. A questo punto, si preleva il sorgente HTML della pagina ottenuta dal punto1 tramite la funzione predefinita PHP file(URL). Dato che ogni pagina web utilizzata per la visualizzazione può contenere al massimo 10 prodotti, sarà necessario determinare su quante pagine è dislocata la visualizzazione di questi. Quindi,. dal sorgente HTML della pagina identificata dall‟ URL http://www.saninforma.it/RisultatiRicerca.jsp?ricmarca=si&nuovaricerca= si&marca= seguito dal nome della marca, si estrapola il numero di pagine web su cui vengono visualizzati i risultati della ricerca per marca. 3. A questo punto dal sorgente HTML di ogni pagina web in cui sono visualizzati i prodotti, è possibile estrapolare le informazioni desiderate. 55 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ Le fasi 1, 2 e 3 vengono eseguite dalla funzione aggiornamento_prodotti( ), con il seguente listato: Screenshot 3-7-Listato della funzione aggiornamento_prodotti() La funzione aggiornamento_prodotti() ha come parametri: Il nome della marca che verrà aggiunta all‟URL http://www.saninforma.it/RisultatiRicerca.jsp?ricmarca=si&nuovaricerca= si&marca= in modo ma ottenere tutti i prodotti di quella marca Il descrittore della connessione al database che verrà utilizzato per la memorizzazione delle informazioni La data odierna che verrà utilizzata, anch‟essa, nella fase di memorizzazione Dopo aver ricavato il sorgente HTML della pagina web individuata dall‟URL precedente seguito dal nome della marca, tramite la funzione predefinita PHP preg_match_all() si andrà a contare quante volte viene ripetuta la stringa: <a title=’ pagina 56 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ Il numero di pagine sui vengono visualizzati i risultati della ricerca, si ottengono: dividendo per 2 il numero di volte in cui si ripete la stringa precedente, in quanto la stringa viene ripetuta un numero di volte doppio rispetto a quante sono le pagine su cui è dislocato il risultato della ricerca. al numero così ottenuto si sottrae 1 unità, in quanto il sito di Saninforma utilizza una numerazione di pagine che parte da 0. A questo punto nella variabile $conta_pagine è contenuto il numero di pagine su cui verrà dislocata la visualizzazione della ricerca per marca. Dopo aver determinato il valore di $conta_pagine, è possibile effettuare la chiamata alla funzione ricerca() in modo che può essere eseguita la fase 4. Alla funzione ricerca() vengono passati i seguenti parametri: Il sorgente HTML della pagina web in cui dovranno essere estrapolate le informazioni relativi ai prodotti parafarmaceutici. In particolare,si distinguono due casi: se il risultato di una ricerca per marca è visualizzato su una sola pagina web (quindi sono presenti al massimo 10 prodotti di quella marca all‟interno del portale), alla funzione ricerca() viene passato il sorgente della pagina web avente URL: http://www.saninforma.it/RisultatiRicerca.jsp?ricmarca=si&nuova ricerca=si&marca= seguito dal nome della marca di cui si sta facendo la ricerca(cioè il sorgente della stessa pagina utilizzata dalla funzione aggiornamento_prodotti() per determinare il valore della variabile $conta_pagine). se il risultato di una ricerca per marca è visualizzato su più pagine, alla funzione ricerca(), alla prima chiamata gli viene passato come parametro il sorgente della pagina web avente URL: http://www.saninforma.it/RisultatiRicerca.jsp?ricmarca=si&nuova ricerca=si&marca= seguito dal nome della marca;nelle successive chiamate, invece, gli viene passato il sorgente della pagina web avente URL 57 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ http://www.saninforma.it/RisultatiRicerca.jsp?ricmarca=si&nuova ricerca=si&marca= seguito dal nome della marca e dalla stringa $numRows= a 10 se $conta_pagine è minore di 20, 20 se $conta_pagine è minore di 30, 30 se$conta_pagine è minore di 40 e così via, in quanto ad un URL di questo tipo, corrispondono le successive pagine web in cui verranno visualizzati i prodotti della marca selezionata. Il descrittore del database utilizzato per la memorizzazione delle informazioni La marca di cui si sta facendo la visualizzazione dei prodotti La data odierna Per ogni pagina web in cui sono visualizzati i prodotti di una determinata marca, il compito della funzione ricerca() è quello di estrapolare: il nome, la descrizione, il link che permette di accedere ad ulteriori informazioni, ed il prezzo di vendita di ogni prodotto. Nell‟implementazione della funzione ricerca() vengono utilizzate le funzioni predefinite PHP preg_match(). Nello specifico: per prelevare il nome del prodotto, sapendo che il nome è compreso tra la stringa: name=’titolo’ value ed il carattere ‘ si utilizzano le seguenti istruzioni: Screenshot 3-8-Istruzioni per prelevare il nome di un prodotto dal sorgente HTML così facendo il nome dell‟ i-esimo prodotto viene salvato nella i-esima riga della prima colonna della matrice chiamata $matrix[][]; 58 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ per estrapolare la descrizione del prodotto, sapendo che essa è compresa tra la stringa name=’sottotitolo value ed il carattere ‘: Screenshot 3-9-Istruzioni che consentono di prelevare descrizione di un prodotto dal sorgente HTML in questo modo la descrizione dell‟i-esimo prodotto viene memorizzata nella i-esima riga della seconda colonna della matrice $matrix[][] per quanto riguarda il link del prodotto, sapendo che esso è compreso tra le stringhe href=’Sezione.jsp e ‘><strong> Screenshot 3-10- Istruzioni per prelevare il link associato a ciascun prodotto dal sorgente HTML Il link relativo all‟i-esimo prodotto verrà salvato nella i-esima riga della terza colonna della matrice $matrix[][] infine, per il prezzo, sapendo che esso è una sottostringa della stringa Prezzo ‘><strong> costituita da soli numeri, allora: Screenshot 3-11- Istruzioni per prelevare il prezzo di vendita di ciascun prodotto dal sorgente html 59 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ Il prezzo di vendita relativo all‟i-esimo prodotto verrà salvato nella iesima riga della quarta colonna della matrice $matrix[][] Per ottenere le informazioni associate a ciascun prodotto di qualsiasi marca presente nel portale, è necessario richiamare la funzione aggiornamento_prodotti() tante volte quante sono le marche e la funzione ricerca() tante volte quante sono le pagina web in cui sono visualizzati i prodotti di una marca. 3.3.2.4 Funzione agg_prodottiparafarmacia() e cerca_prodottiparafarmacia() Le funzioni: agg_prodottiparafarmacia() e cerca_prodottiparafarmacia(), permettono di prelevare: il nome, il link ed il prezzo di vendita di ogni parafarmaco presente nel portale di Parafarmacia. Le fasi che hanno portato all‟implementazione di queste funzioni, sono simili a quelle descritte per le funzioni aggiornamento_prodotti() e ricerca() viste nel paragrafo precedente. Anche in questo caso, dopo aver utilizzato la funzione agg_marcheparafarmacia(), si ha a disposizione la lista completa di tutte le marche presenti nel portale all‟interno del vettore chiamato $matrix[]. Per estrapolare le informazioni necessarie per la realizzazione del progetto, si dovranno eseguire le seguenti azioni: 1. Utilizzando il motore di ricerca per marca interno al portale, è possibile ottenere la lista completa e dettagliata di tutti i prodotti di una marca che sono presenti nel portale. Per fare questo, è necessario aggiungere all‟ URL: http://www.parafarmacia..it/ marca/, che identifica la pagina web utilizzata dal sito www.parafarmacia.it per effettuare la ricerca per marca, il nome della marca di cui visualizzare i prodotti. 60 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ Ad esempio, per visualizzare tutti i prodotti della marca Adipesina, basta aggiungere all‟UTL precedente la parola Adipesina ottenendo il seguente URL: http://www.parafarmacia.it/marca/adipesina/. Ad esso corrisponde la seguente pagina web: Screenshot 3-12-Visualizzazione dei prodotti della marca Adipesina nel portale di Parafarmacia 2. Si preleva il sorgente HTML della pagina ottenuta nel punto precedente tramite la funzione predefinita PHP file(URL) 3. In questo caso, per determinare quante pagine web sono utilizzate per la visualizzazione dei prodotti di una marca, basta contare il numero di volte che si ripete la stringa che inizia con:<a href=’Pagina e termina con: title=’ vai a pagina 4. Dal sorgente HTML di ogni pagina web in cui sono visualizzati i prodotti di una marca, è possibile estrapolare le informazioni desiderate. 61 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ Le fasi 1, 2 e 3 vengono eseguite dalla funzione agg_prodottiparafarmacia() che contiene le seguenti istruzioni: Screenshot 3-13-Listato della funzione agg_prodottiparafarmacia() I suoi parametri sono: il nome della marca che aggiunta all‟URL http://www.saninforma.it/RisultatiRicerca.jsp?ricmarca=si&nuovaricerca= si&marca= permette di ottenere tutti i prodotti di quella marca l‟identificatore del database che verrà utilizzato per la memorizzazione delle informazioni il descrittore della connessione al database, che servirà per la memorizzazione delle informazioni la data odierna che verrà utilizzata, anch‟essa, nella fase di memorizzazione Ottenuto il sorgente HTML della pagina web individuata dall‟URL precedente seguito dal nome della marca, per determinare quante pagine web sono utilizzate per la visualizzazione dei prodotti di una marca, basta contare il numero di volte che si ripete la stringa che inizia con <a href=’Pagina e termina con title=’ vai a pagina. 62 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ Per fare ciò ,vengono utilizzate le seguenti istruzioni PHP, le quali permetto di memorizzare il numero di pagine nella variabile identificata dal nome $conta_pagine, Screenshot 3-14-Istruzioni utilizzate per determinare il numero di pagine su cui è dislocata la visualizzazione dei prodotti di una marca Dopo aver determinato il valore di $conta_pagine, è possibile effettuare la chiamata alla funzione cerca_prodottiparafarmacia(), in modo che possa essere eseguita la fase 4. Alla funzione cerca_prodottiparafarmacia() vengono passati i seguenti parametri: Il sorgente HTML della pagina web in cui dovranno essere estrapolate le informazioni relativi ai prodotti parafarmaceutici. In particolare,si distinguono due casi: se il risultato di una ricerca per marca è visualizzato su una sola pagina web, alla funzione cerca_prodottiparafarmacia() viene passato il sorgente della pagina web avente URL: http://www.parafarmacia..it/ marca/ seguito dal nome della marca di cui si sta facendo la ricerca. se il risultato di una ricerca per marca è visualizzato su più pagine, quando viene chiamata la funzione cerca_prodottiparafarmacia() per la prima volta, gli viene passato come parametro il sorgente della pagina web avente URL: http://www.parafarmacia..it/ marca/= seguito dal nome della marca;nelle successive chiamate, invece, gli viene passato il sorgente della pagina web avente URL http://www.parafarmacia..it/ marca/ seguito dal nome della marca e dalla stringa ?pagina= (uguale) al numero della pagina in cui sono visualizzati i prodotti della marca selezionata. 63 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ Per esempio supponendo che i prodotti di una marca sono visualizzati su 2 pagine web, allora ponendo la stringa ?pagina=1 si ottiene la pagina in cui sono visualizzati la prima parte dei prodotti di quella marca e con ?pagina=2 sarà visualizzata la pagina contenete i restanti prodotti. Il descrittore del database utilizzato per la memorizzazione delle informazioni La marca di cui si sta facendo la visualizzazione dei prodotti La data odierna Per ogni pagina web in cui sono visualizzati i prodotti di una marca, la funzione cerca_prodottiparafarmacia() dovrà ricavare: il nome, il link che permette di accedere ad ulteriori informazioni, ed il prezzo di vendita di ogni prodotto. In particolare: per prelevare il nome del prodotto, sapendo che il nome è compreso tra la stringa <a haref=’ seguita da quattro cifre e la stringa ‘class: Screenshot 3-15-Istruzioni utilizzate per prelevare il nome del prodotto presente all’interno del portale Parafarmacia Così facendo il nome dell‟i-esimo prodotto viene memorizzato nella i-esima riga della prima colonna della matrice $matrix[][] 3.3.3 Memorizzazione delle informazioni in un database Dopo aver estrapolato tutte le informazioni necessarie per la realizzazione del nostro progetto, è necessario memorizzarle in una base di dati in modo tale che esse siano disponibili per le successive elaborazioni. Il DBMS utilizzato per la realizzazione della nostra base di dati è MySQL. 64 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ MySQL è un sistema di database relazionale e per questo motivo è più correttamente chiamato RDBMS (Relational Data Base Management System). Come tutti gli RDBMS, MySQL, è un applicazione software composta da svariati componenti che interagiscono tra di loro. Si è scelto di utilizzare questo tipo di RDBMS perché: esso viene fornito come componente del pacchetto XAMPP (che è stato necessario installare per la realizzazione del nostro progetto) inoltre se confrontato con qualsiasi altro database commerciale, MySQL, garantisce maggiore rapidità, maggiore affidabilità, ed è più economico in quanto Open Source ed infine perchè, il linguaggio PHP mette a disposizione una vasta gamma di funzioni predefinite per interagire con MySQL. Sono stati progettati e realizzati due database chiamati: Saninforma e Parafaramcia ognuno dei quali contiene le rispettive informazioni. Per ognuno dei due, attenendoci alle specifiche di base del progetto, verranno definiti: o i costrutti base necessari per la rappresentazione dello schema E-R, o lo schema E-R (Entità-Relazioni), o la ristrutturazione dello schema E-R , o le Query necessarie per la creazione delle tabelle presenti nel database o le interrogazioni utilizzate per memorizzare le informazioni all‟interno del database Affinché l‟interfaccia realizzata possa essere il più efficiente possibile, è necessario effettuare l‟aggiornamento delle informazioni memorizzate all‟interno del database con regolarità. Questo è necessario sia perchè il prezzo di vendita che la disponibilità di un prodotto possono variare mensilmente o addirittura settimanalmente. 65 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ 3.4 Memorizzazione delle informazioni 3.4.1 Database Saninforma 3.4.1.1 Costrutti base Per quanto riguarda il portale Saninforma, rispettando le specifiche di progetto è possibile definire le seguenti entità: MARCA: nella quale sono memorizzati tutti i nomi delle case farmaceutiche produttrici di parafarmaci vendibili nel portale Saninforma. Gli attributi di questa entità sono: COD_MARCA: numero intero utilizzato per identificare in maniera univoca la casa farmaceutica (Primary Key) NOME_MARCA:stringa contenente il nome della marca DISP_MARCA: valore boolean che permette di indicare se una marca è o non è più presente nel portale (1 presente, 0 non presente) PRODOTTO: contenente tutte le informazioni relative ad ogni prodotto presente (e quindi vendibile) nel portale. I suoi attributi sono: COD_PRO: numero intero utilizzato per l‟identificazione univoca del prodotto (Primary Key) NOME_PRO: stringa contente il nome del prodotto DESC_PRO: stringa contenente la descrizione del prodotto LINK_PRO: stringa contenente l‟URL che permette di accedere alla pagina web contenente informazioni dettagliate sul prodotto in questione DATA_PRO: data in corrispondenza della quale sono state aggiornate le informazioni del prodotto COD_MARCA: identificativo della casa farmaceutica produttrice del prodotto (foreign key) 66 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ STORICO_PREZZO: dove per ogni prodotto di una marca, viene memorizzato il suo prezzo di vendita e la data in cui il prodotto è venduto a quel prezzo. Gli attributi sono: COD_STORICO: numero intero utilizzato per l‟identificazione univoca di ogni riga della tabella STORICO_PREZZO (Primary Key) PREZZO: stringa contenete il prezzo di vendita del prodotto DATA_PREZZO: data in corrispondenza della quale il prezzo del prodotto è stato aggiornato per l‟ultima volta COD_PRO: identificativo del prodotto a cui si sta facendo riferimento (foreign key) Tra le entità PRODOTTO e MARCA si instaura una relazione chiamata APPARTENENZA avente cardinalità 1:n (1 a molti), come schematicamente riportato qui di seguito: Fig. 3-1- Rappresentazione relazione APPARTENENZA Tra le entità STORICO_PREZZO e PRODOTTO si instaura una relazione chiamata PREZZAMENTO avente cardinalità 1:n (1 a molti), come schematicamente riportato qui di seguito: Fig. 3-2 Rappresentazione relazione PREZZAMENTO 67 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ 3.4.1.2 Schema E-R Lo schema E-R ottenuto tramite le precedenti considerazioni è il seguente: Fig. 3-3- Schema E-R database Saninforma 3.4.1.3 Ristrutturazione schema E-R Lo schema E-R va ristrutturato in quanto non tutti i costrutti utilizzati nella sua rappresentazione possono essere tradotti in modo naturale nello schema logico, cioè nello schema che verrà utilizzato come base per la realizzazione del database dal punto di vista fisico. Dato che le relazioni in esso presenti hanno tutte cardinalità 1 a molti (1:n) e sapendo che queste vengono tradotte eliminando la relazione ed inserendo nell‟entità con 68 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ cardinalità 0:1(o 1:n) l‟identificatore principale dell‟entità ad essa collegata, alla fine di questa fase otteniamo le seguenti tabelle: MARCA(COD_MARCA,NOME_MARCA,DISP_MARCA) PRODOTTO(COD_PRO, DATA_PRO, NOME_PRO, DESC_PRO, LINK_PRO, COD_MARCA) STORICO_PREZZO(COD_STORICO, PREZZO, DATA_PREZZO, COD_PRODOTTO) 3.4.1.4 Creazione Tabelle Le Query SQL utilizzate per la creazione delle entità contenute nel database Saninforma sono le seguenti: Creazione dell‟entità MARCA: CREATE TABLE MARCA ( COD_MARCA int(8) NOT NULL AUTO_INCREMENT, NOME_MARCA varchar(50) BINARY NOT NULL, PRIMARY KEY(COD_MARCA), DISP_MARCA tinyint(1) )ENGINE=InnoDB; Creazione entità PRODOTTO: CREATE TABLE PRODOTTO ( COD_PRO int(5) NOT NULL AUTO_INCREMENT, NOME_PRO varchar(100) BINARY NOT NULL, DESC_PRO varchar(200) NULL, LINK_PRO varchar(150) NOT NULL, DATA_PRO DATE, PREFERITI_PRO BOOLEAN DEFAULT 0, COD_MARCA int(5), PRIMARY KEY(COD_PRO), FOREIGN KEY (COD_MARCA)REFERENCES MARCA (COD_MARCA ON DELETE CASCADE ON UPDATE CASCADE )ENGINE=InnoDB 69 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ Creazione entità STORICO_PREZZO: CREATE TABLE STORICO_PREZZO ( COD_STORICO int(8) NOT NULL AUTO_INCREMENT, PREZZO varchar(10) NOT NULL, DATA_PREZZO date NOT NULL, COD_PRODOTTO int(5) NOT NULL, PRIMARY KEY(COD_STORICO), FOREIGN KEY (COD_PRODOTTO)REFERENCES PRODOTTO (COD_PRO) ON DELETE CASCADE ON UPDATE CASCADE )ENGINE=InnoDB; 3.4.1.5 Memorizzazione delle Informazioni Per memorizzare le informazioni si è tenuto conto delle seguenti situazioni: La presenza di una casa farmaceutica all‟interno dell‟entità MARCA . Se è presente un istanza di marca avente lo stesso nome della marca da memorizzare e con la disponibilità uguale ad 1, essa non viene memorizzata; altrimenti se già presente ma con disponibilità uguale a 0, viene modificata la disponibilità settandola a 0, infine se non è presente all‟interno dell‟entità, viene creata una nuova istanza avente lo stesso nome della marca da memorizzare e con disponibilità settata ad 1; La presenza del prodotto all‟interno dell‟entità PRODOTTO. Se già presente con lo stesso nome, descrizione, link e prezzo di vendita, non viene memorizzato altrimenti viene memorizzato come una nuova istanza di PRODOTTO. La presenza di un prodotto all‟interno dell‟entità PRODOTTO ma con disponibilità impostata a 0 ( ovvero se un prodotto era presente nel portale, ma adesso non è più disponibile); in questo caso se il prodotto è di nuovo disponibile nel portale, viene modificato il valore di disponibilità impostandolo ad 1 altrimenti, se non è tornato disponile nel portale, si lascia il valore di disponibilità impostato a 0 70 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ La presenza nell‟entità STORICO_PREZZO di un„ istanza contenente lo stesso codice prodotto, lo stesso prezzo di vendita e la stessa data di aggiornamento del prezzo (se già presente non viene memorizzato altrimenti viene memorizzata come una nuova istanza di STORICO_PREZZO); 3.4.2 Database Parafarmacia 3.4.2.1 Costrutti base Le entità definite per il portale Parafarmacia sono le stesse definite per Saninforma. Le uniche varianti sono date dal fatto che: ogni entità presente nel database Parafarmacia ha lo stesso nome della corrisponde entità presente nel database di Saninforma seguita dai caratteri _P, l‟entità PRODOTTO_P a differenza dell‟entità PRODOTTO di Saninforma non possiede l‟attributo DESC_PRO in quanto i prodotti presenti nel portale Parafarmacia non sono caratterizzati da una descrizione. Di seguito, per completezza, verranno elencate le entità che costituiscono il database Parafarmacia: MARCA_P: contenente tutti i nomi delle case farmaceutiche produttrici di parafarmaci vendibili nel portale Parafarmacia Gli attributi di questa entità sono gli stessi dell‟entità MARCA e cioè: COD_MARCA: numero intero che permette di identificare in maniera univoca la marca (o casa farmaceutica) (Primary Key) NOME_MARCA:stringa contenente il nome della marca DISP_MARCA: valore boolean che permette di indicare se una marca è o non è più presente nel portale (1 presente, 0 non presente) 71 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ PRODOTTO_P: contenente tutte le informazioni relative ad ogni prodotto vendibile nel portale. I suoi attributi sono: COD_PRO: numero intero utilizzato per identificare il prodotto (Primary Key) NOME_PRO: stringa contente il nome del prodotto LINK_PRO: stringa contenente l‟URL che permette di accedere alla pagina web contenente informazioni dettagliate sul prodotto in questione DATA_PRO: data in corrispondenza della quale sono state aggiornate le informazioni del prodotto COD_MARCA: identificativo della casa farmaceutica produttrice del prodotto (foreign key) STORICO_PREZZO_P: dove per ogni prodotto di una marca, viene memorizzato il suo prezzo di vendita e la data in cui il prodotto è venduto a quel prezzo. Gli attributi sono: COD_STORICO: numero intero utilizzato per l‟identificazione univoca di ogni riga della tabella STORICO_PREZZO (Primary Key) PREZZO: stringa contenete il prezzo di vendita del prodotto DATA_PREZZO: data in corrispondenza della quale il prezzo del prodotto è stato aggiornato per l‟ultima volta COD_PRO: identificativo del prodotto a cui si sta facendo riferimento (foreign key) 72 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ Tra le entità PRODOTTO_P e MARCA_P si instaura una relazione chiamata APPARTENENZA_P avente cardinalità 1:n (1 a molti) come schematicamente riportato qui di seguito: Fig. 3-4- Schema relazione APPARTENENZA_P Tra le entità STORICO_PREZZO_P e PRODOTTO_P si instaura una relazione chiamata PREZZAMENTO avente cardinalità 1:n (1 a molti) come schematicamente riportato qui di seguito: Fig. 3-5- Schema relazione PREZZAMENTO_P 73 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ 3.4.2.2 Schema E-R Il schema E-R ottenuto è il seguente: Fig. 3-6 Schema E-R database Parafarmacia 3.4.2.3 Ristrutturazione schema E-R Anche in questo caso lo schema E-R va ristrutturato in modo da ottenere uno schema logico e che quindi il database possa essere realizzato dal punto di vista fisico. Dato che le relazioni presenti nello schema E-R precedente hanno cardinalità 1 a molti, al termine di questa fase si ottengono le seguenti entità: MARCA_P(COD_MARCA,NOME_MARCA,DISP_MARCA) PRODOTTO_P(COD_PRO, NOME_PRO, LINK_PRO, DATA_PRO, COD_MARCA) STORICO_PREZZO_P(COD_STORICO, PREZZO, DATA_PREZZO, COD_PRODOTTO) 74 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ 3.4.2.4 Creazione Tabelle Le Query SQL utilizzate per la creazione delle entità contenute nel database Parafarmacia sono: Creazione dell‟entità MARCA_P: CREATE TABLE MARCA ( COD_MARCA int(8) NOT NULL AUTO_INCREMENT, NOME_MARCA varchar(50) BINARY NOT NULL, PRIMARY KEY(COD_MARCA), DISP_MARCA tinyint(1) )ENGINE=InnoDB; Creazione entità PRODOTTO_P: CREATE TABLE PRODOTTO_P ( COD_PRO int(5) NOT NULL AUTO_INCREMENT, NOME_PRO varchar(200) BINARY NOT NULL, LINK_PRO varchar(150) NOT NULL, COD_MARCA int(5), PRIMARY KEY(COD_PRO), FOREIGN KEY (COD_MARCA) REFERENCES MARCA_P (COD_MARCA) ON DELETE CASCADE ON UPDATE CASCADE )ENGINE=InnoDB 75 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ Creazione entità STORICO_PREZZO_P: CREATE TABLE STORICO_PREZZO_P ( COD_STORICO int(8) NOT NULL AUTO_INCREMENT, PREZZO varchar(10) NOT NULL, DATA_PREZZO date NOT NULL, COD_PRODOTTO int(5) NOT NULL, PRIMARY KEY(COD_STORICO), FOREIGN KEY (COD_PRODOTTO) REFERENCES PRODOTTO_P (COD_PRO) ON DELETE CASCADE ON UPDATE CASCADE )ENGINE=InnoDB; 76 CAPITOLO 3–PROGETTAZIONE e REALIZZAZIONE ____________________________________________________________________ 3.4.2.5 Memorizzazione delle Informazioni Anche in questo caso, per memorizzare le informazioni si è tenuto conto delle seguenti situazioni: La presenza di una casa farmaceutica all‟interno dell‟entità MARCA_P . Se è presente un istanza di marca avente lo stesso nome della casa farmaceutica da memorizzare e con la disponibilità uguale ad 1, essa non viene memorizzata; altrimenti se già presente ma con disponibilità uguale a 0, viene modificata la disponibilità settandola a 0, infine se non è presente all‟interno dell‟entità, viene creata una nuova istanza avente lo stesso nome della marca da memorizzare e con disponibilità uguale ad 1; La presenza del prodotto all‟interno dell‟entità PRODOTTO_P. Se già presente con lo stesso nome, link e prezzo di vendita, non viene memorizzato altrimenti viene memorizzato come una nuova istanza di PRODOTTO_P. La presenza di un prodotto all‟interno dell‟entità PRODOTTO_P ma con disponibilità impostata a 0 ( ovvero se un prodotto era presente nel portale, ma adesso non è più disponibile); in questo caso se il prodotto è di nuovo disponibile nel portale, viene modificato il valore di disponibilità impostandolo ad 1 altrimenti, se non è tornato disponile nel portale, si lascia il valore di disponibilità impostato a 0 La presenza nell‟entità STORICO_PREZZO_P di un„ istanza contenente lo stesso codice prodotto, lo stesso prezzo di vendita e la stessa data di aggiornamento del prezzo (se già presente non viene memorizzato altrimenti viene memorizzata come una nuova istanza di STORICO_PREZZO_P); 77 CAPITOLO 4- CMS Zen Cart e CMS e-Commerce ____________________________________________________________________ CAPITOLO 4 - CMS Zen Cart e CMS e-Commerce 4.1 Introduzione Tutti hanno preso atto dei cambiamenti rivoluzionari che Internet ha imposto a livello di cultura, d‟informazione, di intrattenimento, di comunicazione, di relazioni personali, di business. La stessa vita delle imprese né è stata coinvolta visto che per esse si prospettano accanto al mercato reale l‟esistenza di uno virtuale fatto di cyberclienti, di cyberconcorrenza e di cybermedari, che ha comportato un nuovo modo di far economia e business, di comunicare, di organizzare l‟offerta, di promuovere, di vendere, di fare marketing. Per questo il commercio elettronico (più comunemente chiamato e-commerce) che Internet ha alimentato, non può e non deve essere considerato da parte delle imprese e dagli imprenditori come un optional, ma al contrario una realtà con cui ci si deve confrontare. Più in dettaglio,con la parola e-commerce si fa riferimento all‟esclusivo ambito commerciale, cioè a quello della vendita dei bene e dei servizi in rete; l‟ecommerce attiva una transazione completa dalla presentazione di un‟offerta online all‟acquisto, al pagamento, all‟assistenza; l‟utilizzo della rete elettronica ha un impatto notevole sullo stesso modello di fare business da parte dell‟impresa; ciò pone radicali cambiamenti; infatti modalità d‟intervento, criteri decisionali, tipologia di presenza nel cybermercato, canali e punti di vendita, mezzi di comunicazione e di promozione, comportamenti d‟acquisto, nuove funzioni e nuove professioni, soluzioni tecnologiche ecc., sono destinati ad adeguarsi al nuovo modello di business sviluppando soluzioni personalizzate ad alto valore aggiunto. Lo scenario impone all‟azienda di riproporsi organizzativamente e commercialmente in base alla strategia di e-commerce che viene adottata 78 CAPITOLO 4- CMS Zen Cart e CMS e-Commerce ____________________________________________________________________ L‟e-commerce offre indubbi benefici sia per chi vende e sia per chi acquista. Per i primi i vantaggi sono: L‟abbattimento delle barriere geografiche poiché il mercato della Rete è un mercato globale che permette dir aggiungere clienti ovunque essi si trovino; Barriere all‟entrata estremamente basse: i costi di inizio attività sono molto più contenuti rispetto al commercio tradizionale; Non ci sono più intermediari, ciò vuol dire un ulteriore diminuzione dei costi e la possibilità di conoscere direttamente il proprio cliente. Per chi acquista, invece, i vantaggi sono: Con Internet è possibile accedere ad un numero illimitato di informazioni commerciali, servizi e prodotti. Stando seduti davanti al computer, è possibile confrontare le offerte di tutti i venditori, arrivando così ad ottenere ciò che meglio soddisfa le proprie esigenze al prezzo più vantaggioso. Nel commercio tradizionale una ricerca simile comporta un notevole dispendio di tempo, così che solitamente si effettua la scelta più conveniente tra quelle a disposizione; Si ha una rapida risposta alla necessità Dal fatto che le aziende riescano a tagliare i propri costi, può conseguire soprattutto una diminuzione dei prezzi dei beni e dei servizi venduti; Il consumatore può assumere maggiore potere contrattuale, ciò porterebbe un ulteriore diminuzione dei prezzi. Per quanto, invece, riguarda i fattori di ostacolo alla diffusione del commercio elettronico sono: Un insufficiente regolamentazione internazionale: nonostante sono state introdotte nuove norme relative al campo specifico dell‟e-commerce, la tutela dei consumatori lungo tutto il processo di acquisto rimane non del tutto sufficiente; La confusine determinata dall‟abbattimento delle barriere per cui non è più così semplice stabilire i confini giurisdizionali come nel caso del commercio tradizionale; 79 CAPITOLO 4- CMS Zen Cart e CMS e-Commerce ____________________________________________________________________ La necessità di adottare delle infrastrutture tecnologicamente adeguate che implica quindi un forte investimento in apparecchiature hardware e software, nonché degli aggiornamenti degli addetti ai lavori; Il problema della sicurezza dei sistemi di pagamento. Per la realizzazione di portali e-commerce, ovvero di portali in cui è possibile acquistare e vendere dei prodotti, solitamente si utilizzano dei CMS (content management system) ovvero dei strumenti software usati per facilitare la costruzione di portali (o siti web) . Essi normalmente forniscono una serie di funzioni predefiniti per la gestione dei contenuti informativi di un sito. i CMS più sofisticati supportano tutte le necessità di una redazione web composta da numerose persone In particolare: Permettono all‟amministratore di un sito di definire i diritti di accesso dei diversi redattori alle varie sezioni del sito. In tal modo, il sistema potrà controllare che ogni redattore possa modificare soltanto le sezioni o le pagine che gli sono state affidate; Gestiscono il flusso delle attività redazionali secondo uno schema predefinito, per esempio redazione in bozza, revisione, approvazione e pubblicazione in rete dei diversi contenuti. In tal modo il sistema potrà controllare che non vengano pubblicate pagine web che non siano state preventivamente revisionate e approvate dal responsabile della relativa sezione del sito; Forniscono le funzioni di inserimento, modifica e cancellazione delle pagine del sito , necessarie per il lavoro dei redattori; Possono fornire ,inoltre , alle funzioni “preconfezionate” che facilitano la realizzazione di siti web interattivi, per esempio funzioni per al gestione di News, FAQ, forum e così via. I CMS sono dei prodotti piuttosto complessi, che devono installati e personalizzati in modo opportuno da persone esperte. 80 CAPITOLO 4- CMS Zen Cart e CMS e-Commerce ____________________________________________________________________ I CMS più utilizzati per la realizzazione di portali e-commerce, in questo momento, sono: o Zen- Cart o osCommerce o Joomla o Drupal o Wordpress o vBullettin o Xoops o Frog o Magento In questo capitolo, dopo aver introdotto il significato di e-commerce e CMS, verranno descritti i CMS osCommerce e Zen Cart i quali rispettivamente sono i CMS che utilizzavano ed utilizzano la Farmacia Blasi Dott. Giuseppe con sede a Monsampietro Morico (FM) per la realizzazione del loro portale di vendita online di prodotti parafarmaceutici. 4.2 CMS Zen Cart 4.2.1 In cosa consiste il CMS Zen Cart? Zen Cart rappresenta l‟Arte dell‟e-commerce: si tratta di un sistema di carrello elettronico open source, gratuito, di facile utilizzo, adatto a quanti vogliano realizzare un negozio/show room online. Il software di Zen Cart (o CMS ZenCart) scritto in PHP, per funzionare richiede l‟installazione su di un server (online o in locale) ed un da base MySQL. Zen Cart viene sviluppato da un affiatato team di esperti negozianti, programmatori, designer e consulenti convinti che l‟e-commerce possa e debba assumere una formula semplice ma accattivante. Con Zen Cart sarà possibile avere un negozio online per vendere beni fisici come vestiario, hardware, parafarmaci, ecc., o beni digitali come certificati regalo, downloads di brani musicali, ecc. o perfino servizi 81 CAPITOLO 4- CMS Zen Cart e CMS e-Commerce ____________________________________________________________________ come polizze assicurative, piani di supporto IT,ecc… L‟unico limite è la visione per interpretare ed utilizzare il software per i propri scopi. Zen Cart pone in primo piano sia le aspettative del negoziante che del cliente, infatti nel primo caso può essere installato e settato da chiunque abbia un minimo di conoscenze in campo informatico, ma per inciso il mantenimento e l‟utilizzo quotidiano sono il suo punto forte, ed in poche ore l‟amministratore sarà in grado di provvedere autonomamente con la soddisfazione di veder realizzati il suo impegno e gli sforzi di apprendistato spesi nel progetto. Zen Cart offre ai visitatori del negozio le novità più interessanti in materia di shopping online. La navigazione attraverso gli articoli del negozio è veloce, semplice e sicura. Il programma mette a disposizione un motore di ricerca molto potente e diversi “punti focali” in aggiunta ai tradizionali collegamenti fra le categorie ed i prodotti. Una volta inserito l‟articolo nel carrello, la procedura di acquisto viene esaurita in tre semplici fasi: dopo aver inserito i dati di fatturazione, il cliente sceglie il metodo di spedizione (fra quelli proposti), e successivamente sceglierà una modalità di pagamento (fra quelli impostati dal negoziante), infine, il cliente ha la possibilità di rivedere l‟ordine, le modalità di spedizione e di pagamento ed aggiungere delle proprie note in un apposito spazio, prima di confermare l‟acquisto. A conferma avvenuta, il negoziante riceve immediatamente l‟avviso dell‟ordine mentre il cliente riceve automaticamente una conferma tramite una email personalizzata. 4.2.2 Da chi è distribuito? Il codice sorgente di Zen Cart è distribuito sotto la GNU General Public License (GPL). In breve, questa licenza dà a tutti il diritto di modificare il codice sorgente per realizzare i propri obiettivi. Questo significa che Zen Cart può anche essere utilizzato così come distribuito (con delle minime personalizzazioni) oppure può, meglio “dovrebbe” essere personalizza in ogni dove (dal design alla grafica, dai testi ai collegamenti) per profilare al massimo al proprio segmento di mercato, o target, la comunicazione ed ottenere il massimo riscontro con l‟utenza online. 82 CAPITOLO 4- CMS Zen Cart e CMS e-Commerce ____________________________________________________________________ Comunque, lavori derivati che modificano il codice sorgente devono aderire ad alcune restrizioni se devono poi essere re-distribuiti. Maggiori informazioni sulla licenza GNU GPL e sulle restrizioni che devono essere effettuate prima di re-distribuire i codice sorgenti, possono essere trovate all‟indirizzo: http://www.fsf.org/licensing/licenses/index.html. 4.2.3 Requisiti Server per Zen Cart Per il corretto funzionamento di Zen Cart è necessario avere a disposizione un Web Server in cui sia abilitato l‟utilizzo di script PHP e di un database in cui archiviare i dati.. Dato che Zen Cart è installato nello stesso Server nel quale, precedentemente, è stato installato il pacchetto XAMPP 1.7.4, allora i software che si hanno a disposizione sono: Web Server Apache 2.2. PHP 5.3.5 Database MySQL 5.5.8 Community Server 4.2.4 Preparare l’installazione di Zen Cart Prima di installare il software Zen Cart bisogna creare un database che viene usato per memorizzare le informazioni relative alla configurazione, inserite durante il processo di installazione, e tutti i settaggi del negozio che si andrà a creare, come le informazioni sui clienti, categorie, prodotti, ecc. Il database verrà creato nel server dal DBMS MySQL che è stato installato con XAMPP. 83 CAPITOLO 4- CMS Zen Cart e CMS e-Commerce ____________________________________________________________________ Per creare un database con MySQL: 1. Aprire il Pannello di Controllo di XAMPP ed assicurasi di aver avviato tutti i servizi necessari (Apache e MySQL su tutti); 2. Nel browser scrivere l‟indirizzo http://localhost/phpmyadmin/, ottenendo la seguente schermata: Screenshot 4-1- URL http://localhost/phpmyadmin/ 3. Scrivere il nome del database da utilizzare per l‟istallazione di ZenCart nel campo Crea un nuovo Database. Nel nostro caso, viene chiamato Negozio; 4. Lasciare invariati gli altri settaggi e cliccare su Crea per creare un nuovo database; 5. Il nuovo database creato verrà mostrato nel menù a tendina nel pannello di sinistra. All‟interno del database Negozio sono presenti tutte le entità che verranno utilizzate dal CMS Zen Cart per realizzare un portale di ecommerce, come ad esempio, le entità: andress_book che verrà utilizzata per memorizzare i dati di un cliente; categories memorizzerà le categorie dei prodotti vendibili nel portale; orders conterrà gli ordini che verranno effettuati; products in cui saranno presenti tutti i prodotti vendibili nel portale; 84 CAPITOLO 4- CMS Zen Cart e CMS e-Commerce ____________________________________________________________________ 4.2.5 Installazione Zen Cart in locale Per la realizzazione del progetto è stata installata la versione 1.3.9 in Italiano di Zen Cart. Dopo essersi assicurati di aver installato tutto il software necessario alla corretta installazione di Zen Cart, non resta che procurarsi il codice sorgente reperibile attraverso il seguente link: http://www.zen-cart.it/download/viewcategory/14-zencart-italiano. Terminato il download, si estrarre il file scaricato dato che è un file con estensione .zip) nella cartella <XAMPP>/htdocs del PC, il percorso finisce con la directory <XAMPP>/htdocs/Zen Cart Italia 1.3.x. A questo punto la directory Zen Cart Italia 1.3.x stata rinominata negozio_di_prova. Prima di iniziare l‟installazione di Zen Cart 1.3.9 bisogna assicurarsi di aver avviato tutti i servizi dal Pannello di Controllo di XAMPP e che questi siano funzionanti. Oltre ai servizi Apache e MySql bisogna attivare da anche il servizio Mercury che permette di gestire tutte le email, entranti ed uscenti, dal nostro server di posta elettronica; otteniamo, allora, la seguente configurazione del pannello di controllo di XAMPP: Screenshot 4-2-Pannello di controllo di XAMMP 85 CAPITOLO 4- CMS Zen Cart e CMS e-Commerce ____________________________________________________________________ L‟installazione di Zen Cart viene effettuata esclusivamente tramite browser con una connessione attiva tramite il richiamo delle pagine via server. I passi da eseguire sono i seguenti: 1. Aprire un web browser, puntare all‟indirizzo, nel nostro caso in locale http://localhost/negozio_di_prova per avviare l‟installer. Apparirà una schermata di benvenuto del programma di installazione Zen Cart, per la versione scaricata. La prima cosa che accadrà sarà il richiamo in automatico della pagina di avvio del processo all‟interno della cartella di installazione: il sistema ogni volta che si richiama la home page si interroga, per richiamare i file di configurazione e testare tutte le sue funzionalità, in mancanza di una corretta configurazione avvierà come visto l‟installer, eccolo in figura: Screenshot 4-3-Schermata di Benvenuto per l’installazione di Zen Cart 2 Premendo il pulsante INIZIA si passa alla seconda schermata, dove verrà richiesto di leggere ed accettare le condizioni dettate dalla licenza GNU v2. Una volta accettato si passerà alla schermata dei prerequisiti. In questa pagina l‟installer esaminerà tutti i requisiti tecnici, indispensabili al corretto funzionamento del programma, e segnalerà con una “X” e con il colore rosso, 86 CAPITOLO 4- CMS Zen Cart e CMS e-Commerce ____________________________________________________________________ tutte le anomalie che dovranno essere risolte prima di procedere, mentre gli avvisi verranno segnalati con un punto esclamativo racchiuso in un cerchio di colore giallo ed utilizzando caratteri di colore arancione. Inoltre,l‟installer controllerà anche i corretti permessi sulle cartelle e sui file, indicando quelli da modificare. Screenshot 4-4-Visualizzazione dei Prerequisiti di Sistema necessari per procedere all’installazione di Zen Cart Quando tutte le voci presenti nelle immagini precedenti hanno la spunta verde, sarà possibile proseguire. 87 CAPITOLO 4- CMS Zen Cart e CMS e-Commerce ____________________________________________________________________ 3 Cliccando su Install verrà visualizzata la schermata Setup Database che permetterà di settare le impostazioni per quanto riguarda il database sul quale il negozio online si baserà ( che deve essere lo stesso Database creato nella fase di: Preparare l’installazione di Zen Cart) Screenshot 4-5-pagina di Setup Database Il primo campo presenta un menù a tendina dove sarà possibile scegliere il tipo di database da utilizzare (nel nostro caso MySQL), a seguire verranno richieste le informazioni relative al prefisso da utilizzare per le tabelle contenute nel database, il nome dell‟host o l‟indirizzo IP del server MySQL, il nome utente e la password da utilizzare durante la connessione e il nome del database (creato prima di iniziare l‟installazione di Zen Cart e chiamato Negozio_Zencart). Nel campo successivo, verrà richiesto se conservare o meno le sessioni nel database. Le ultime due informazioni sono inerenti al metodo da utilizzare per l‟SQL caching ed il percorso per la cartella di cache; nel nostro caso sono state lasciate le informazioni di default. 88 CAPITOLO 4- CMS Zen Cart e CMS e-Commerce ____________________________________________________________________ 4 Andando avanti si accederà alla pagina chiamata Sistema Setup.Qui verranno rilevati automaticamente i path (percorso) di sistema: dove fisicamente è presente la directory di Zen Cart, l‟indirizzo del negozio virtuale, l‟indirizzo del server HTTPS e il path virtuale che punta alla directory di Zen Cart 5 Andando avanti si aprirà una nuova schermata chiamata Setup Negozio che permette di impostare i settaggi del negozio virtuale. In particolare varrà richiesto di inserire il nome del negozio, il nome completo e l‟indirizzo email del responsabile attività, la nazione, la città e l‟indirizzo completo del negozio, ossia tutte quelle informazioni che verranno stampate sui documenti e utilizzate nell‟invio delle mail. In basso, sarà possibile selezionare la lingua di default, la valuta ed infine se installare una DEMO di categorie, prodotti ed allestimento per vetrine, varianti prodotto ed offerte per conoscere ed imparare caratteristiche e peculiarità di Zen Cart. Screenshot 4-6-pagina contenenti il Setup Negozio 89 CAPITOLO 4- CMS Zen Cart e CMS e-Commerce ____________________________________________________________________ Per proseguire, premere il tasto Salva Settaggi Negozio che provvederà a creare le tabelle del database e caricare tutti i dati della versione dimostrativa. 6 Nella nuova pagina visualizzata, verrà richiesto di inserire tutti i dati relativi all‟amministratore del negozio: il nome dell‟utente, la password e l‟indirizzo email dell‟amministratore. Infine sarà possibile abilitare o meno il controllo degli aggiornamenti di Zen Cart, spuntando la relativa check box situata in fondo alla pagina. Abilitando questa opzione, ad ogni autenticazione come amministratore, Zen Cart sarà in grado di rilevare la presenza di nuove versioni disponibili. Screenshot 4-7-Pagina Setup Admin 90 CAPITOLO 4- CMS Zen Cart e CMS e-Commerce ____________________________________________________________________ 7 Cliccando su Salva Settaggi Admin si accederà all‟ultima schermata in cui comparirà il messaggio di completamento installazione: Screenshot 4-8-Completamento installazione Dopo aver terminato l‟installazione, per motivi di sicurezza, si consiglia di cancellare, piuttosto che rinominare, la cartella zc_install, in modo da evitare tentativi di re-instalalzione o di eliminazione del database del negozio. Altro passo di fondamentale importanza, prima di aprire il negozio al pubblico, è modificare subito i permessi, in sola lettura, dei file configure.php presenti nelle cartelle: /admin/includes /includes/ 91 CAPITOLO 4- CMS Zen Cart e CMS e-Commerce ____________________________________________________________________ 4.2.6 Testing di Zen Cart Effettuando l‟operazione di testing ( procedura usata per verificare singole parti di un codice sorgente) del Software di Zen Cart installato in locale è possibile determinare un insieme di caratteristiche e di funzionalità dello stesso. Una volta terminata l‟installazione, sarà possibile accedere a due diverse aree: Negozio Pannello di amministrazione 4.2.6.1 Negozio Zen Cart Accedendo al negozio, si ha una home page di questo tipo: Screenshot 4-9- Home page del negozio virtuale di prova 92 CAPITOLO 4- CMS Zen Cart e CMS e-Commerce ____________________________________________________________________ Il visitatore che accede a questa home page, può navigare tra i prodotti (nel nostro negozio sono presenti i prodotti demo ottenuto dall‟installazione di ZenCart) tramite il box laterale Categorie. Scelto un prodotto, verrà mostrata la scheda “pagina articolo” con le informazioni relative a quanto selezionato: in dettaglio descrizione, prezzo, peso, sconti e molto altro. Screenshot 4-10-Schermata ottenuta dopo aver scelto un prodotto Nella pagina del “Carrello” si potrà controllare il numero di articoli in ordine, prezzo, peso e costi di spedizione. Sarà possibile eliminare e cambiare la quantità degli articoli scelti: Screenshot 4-11-Pagina Carrello 93 CAPITOLO 4- CMS Zen Cart e CMS e-Commerce ____________________________________________________________________ Una volta soddisfatte le scelte si ciccherà il bottone “Alla Cassa” per iniziare il processo di chiusura ordine. Prima della chiusura ordine, l‟utenza verrà indirizzata alla pagina di “Login”: Screenshot 4-12-Sezione Login Nel caso in cui l‟utente non è registrato (quindi non è in possesso di User e Password), gli verrà proposto di registrarsi. Nel passaggio da utente anonimo a utente registrato, Zen Cart riporterà gli articoli nel carrello cliente in modo che non vadano perduti. Supponendo di essere un utente identificato, una volta effettuato il Login, il cliente, continuando il processo di chiusura ordine, verrà automaticamente reindirizzato alla pagina “Info per la spedizione” nella quale sceglierà l‟opzione preferita per la spedizione e confermerà il proprio indirizzo di spedizione o potrà scegliere di far consegnare ad altra persona e destinazione. Infine si accederà nella pagina “Conferma Ordine”, in cui verranno calcolati e visualizzati tutti i costi (spese di spedizione, aliquote di imposta, ecc) per l‟ordine cliente, oltre ai relativi indirizzi di fatturazione e di spedizione. Se tutti i dettagli dell‟ordine saranno corretti, il cliente premendo il bottone “Conferma Ordine”, il sistema elaborerà l‟ordine inviando le email di conferma ordine al cliente ed all‟amministratore, impostando lo stato dell‟ordine, il tipo di pagamento scelto e salvando il tutto nel database. 94 CAPITOLO 4- CMS Zen Cart e CMS e-Commerce ____________________________________________________________________ 4.2.6.2 Amministrazione negozio Zen Cart Una volta effettuato il login come amministratori, si avrà accesso al Pannello di Amministrazione di Zen Cart, dove sarà possibile modificare le impostazioni di carattere amministrativo del negozio attraverso la scelta di voci che costituiscono un menù a tendina: Screenshot 4-13-Menù a tendina presente nel pannello di amministrazione Da qui è possibile accedere alle varie categorie di controllo e settaggio: o Configurazione: contiene tutte le impostazioni base dia del negozio che del programma. o Catalogo:. Per gestire tipologie e prodotti, categorie e sottocategorie, specificare e disporre tutte le varianti di prodotti, così come porre i prodotti in vetrina, nelle offerte e promozioni. o Moduli: per configurare e gestire i moduli pagamento, spedizione e la compilazione del totale. o Clienti: per amministrare clienti e ordini, gruppi di sconto e le notifiche PayPal. o Località/Tasse: impostazione dei paesi con gestione delle zone ed aliquote di tassa impostate. o Localizzazioni: per definire gli idomi disponibili nel negozio, le valute accettate nel pagamento e lo stato degli ordini. o Reports: presenta elenchi di prodotti visti, acquistati ed in esaurimento. o Strumenti: è un insieme di utilità, sia di configurazione che gestione struttura e contenuti. o Certificato Regalo/buoni Sconto: gestione e amministrazione completa con storico dettagli. o Extra: profilato nella distribuzione base soprattutto ai negozi di musica, disponendo clip multimediali arredo o interrogazione della scheda prodotto. 95 CAPITOLO 4- CMS Zen Cart e CMS e-Commerce ____________________________________________________________________ La pagina di Amministrazione offre anche una visione generale e veloce di come procede il negozio. Sono infatti riportate le statistiche su numero di pagine viste, clienti, prodotti e altro ancora, così come il numero di offerte, prodotti e saldi attivi o scaduti ecc. Screenshot 4-14-Pannello di amministrazione del negozio online 4.2.7 LINK al sito Per maggiori informazioni è possibile visitare il sito ufficiale della comunita italiana di Zen Cart: www.zencart-italia.com 96 CAPITOLO 4- CMS Zen Cart e CMS e-Commerce ____________________________________________________________________ 4.3 CMS osCommerce 4.3.1 In cosa consiste il CMS osCommerce? OsCommerce è una nota piattaforma di e-commerce che consente di creare e gestire un negozio per la vendita online di illimitati prodotti.. Il software di osCommerce è scritto in PHP e funzioni che esso fornisce sono: gestione dei prodotti, creazione e gestione del carrello della spesa, impostare la valuta , effettuare una o più spedizioni,possibilità di scelta tra diverse modalità di pagamento, gestione degli ordini, opzioni multilingua e multivaluta, e tante altre ancora. 4.3.2 Da chi è distribuito? OsCommerce è un software open source per il commercio elettronico e conta la più ampia community di sviluppatori on-line da tutto il mondo. Dagli Stati Uniti all' Europa, dalla Cina alla Russia, passando dall' Australia all' America Centro – Meridionale. Sul sito ufficiale (www.oscommerce.com) sono presenti: oltre 3200 “contributions”: si tratta di moduli aggiuntivi (per i pagamenti, per le modalità di spedizione, funzioni su come presentare prodotti e news ai clienti oppure funzioni che semplificano notevolmente la parte amministrativa del sito di e-commerce, implementazioni in varie lingue, templates e immagini non standard, sistemi di interfacciamento con i gateways che accettano le carte di credito, ecc.) strumenti per condividere le proprie contributions: tutti gli utenti che hanno sviluppato moduli aggiuntivi per osCommerce possono renderli disponibili alla comunità documentazione a volontà: centinaia di articoli sono raccolti nella knowledge base(disponibili sia in formato zip che in versione “navigabile” direttamente via browser) 97 CAPITOLO 4- CMS Zen Cart e CMS e-Commerce ____________________________________________________________________ forum di aiuto nel quale è possibile interagire con gli sviluppatori e tra sviluppatori circa 9000 negozi reali (live stores) e naturalmente la possibilità di segnalare, gratuitamente, anche il proprio. Sempre dal sito ufficiale, inoltre, è possibile scaricare una versione base gratuita del software (http://www.oscommerceitalia.net/oscommerce_italiano.htm). 4.3.3 Requisiti Server per osCommerce Per il corretto funzionamento del CMS osCommerce si deve disporre degli stessi requisiti necessari per il CMS Zen Cart. Quindi si deve avere a disposizione un Web Server in cui sia abilitato l‟utilizzo di script PHP e di un database in cui archiviare i dati. Dato che osCommerce è installato nello stesso Server nel quale, è stato installato il pacchetto XAMPP 1.7.4, allora i software che si hanno a disposizione sono: Web Server Apache 2.2. PHP 5.3.5 Database MySQL 5.5.8 Community Server 4.3.4 Preparare l’installazione di osCommerce Affinché possa essere installato il software osCommerce è necessario creare un database che viene usato per memorizzare le informazioni relative alla configurazione, inserite durante il processo di installazione, e tutti i settaggi del negozio online che si andrà a creare, Il database verrà creato nel server dal DBMS MySQL che è stato installato con XAMPP.Il database creato (con le stesse modalità viste per Zen Cart), lo chiamiamo: osCommerce_DB. 98 CAPITOLO 4- CMS Zen Cart e CMS e-Commerce ____________________________________________________________________ 4.3.5 Installazione osCommerce in locale Dopo essersi assicurati di aver installato tutto il software necessario per soddisfare i requisiti necessari per il corretto funzionamento di osCommerce, non resta che procurarsi il codice sorgente reperibile attraverso il seguente link: http://www.oscommerceitalia.net. Il software scaricato si chiama: osCommerce Online Merchant versione 2.3.1. Terminato il download, si estrarre il file scaricato (dato che è un file con estensione .zip) nella cartella <XAMPP>/htdocs del PC, il percorso finisce con la directory <XAMPP>/htdocs/ oscommerce-2.3.1. A questo punto la directory oscommerce-2.3.1 stata rinominata negozio_osCommerce. Dopo aver messo in funzione i servizi: Apache, MySQL e Mercury dal Pannello di Controllo di XAMPP.è possibile iniziare l‟installazione di oscommerce-2.3.1. 99 CAPITOLO 4- CMS Zen Cart e CMS e-Commerce ____________________________________________________________________ Le fasi da eseguire per una corretta istallazione sono le seguenti: 1. Aprire il e browser andare all‟indirizzo http://localhost/osCommerce_negozio/catalog/ in modo da visualizzare una schermata del tipo: Screenshot 4-15-URL http://localhost/osCommerce_negozio/catalog / 2. Cliccando sul bottone “Continue” e si accede alla seguente schermata: Screenshot 4-16-FORM in cui inserire le informazioni riguardanti il database del negozio online nella quale si deve inserire il nome del Server che contiene il database (nel nostrocaso localhost in quanto si sta lavorando in locale), il nome dell‟User, la 100 CAPITOLO 4- CMS Zen Cart e CMS e-Commerce ____________________________________________________________________ password ed il nome del Database che che è stato creato nella fase di Preparazione all‟istallazione di osCommerce e cioè: osCommerce_DB. Ciccando su “Continua” verrà visualizzata la conferma di avvenuta connessione al DB. Cliccando nuovamente su “Continua”: si avrà la conferma della corretta creazione delle tabelle nel db 3. A questo punto comparirà una schermata nella quale si deve inserire il nome del negozio da visualizzare online, il nome del negozio da visualizzare in pubblico, l‟email del negozio, il nome e la password dell‟amministratore del negozio online. Nel nostro caso sono stati inseriti dei dati di prova, ottenendo la schermata compilata nel seguente modo: Screenshot 4-17-Sezione in cui inserire le informazioni relative al negozio che si andrà a creare 4. Premendo il pulsante “continue” si accederà all‟ultima schermata che conferma la corretta installazione del software oscommerce-2.3.1. 101 CAPITOLO 4- CMS Zen Cart e CMS e-Commerce ____________________________________________________________________ 4.3.6 Testing di OsCommerce In questo paragrafo viene descritta qualche funzionalità del software osCommerce installato in locale, sulla base di semplici “simulazioni”. Una volta terminata l‟installazione, sarà possibile accedere a due diverse aree: Catalog Administration Tool 4.3.6.1 Catalog Accedendo a Catalog si ha l‟home page del negozio online, che corrisponde alla seguente schermata: Screenshot 4-18-Home page del negozio online 102 CAPITOLO 4- CMS Zen Cart e CMS e-Commerce ____________________________________________________________________ Il visitatore che accede a questa home page, può navigare tra i prodotti (nel nostro negozio sono presenti i prodotti demo ottenuto dall‟installazione di osCommerce) scegliendoli dal menù a sinistra della pagina. Per ogni prodotto scelto, verrà visualizzata la scheda del prodotto contenente la descrizione del prodotto selezionato. Screenshot 4-19-Pagina contenente la descrizione del prodotto selezionato Supponendo di aggiungere il prodotto precedente nel “carrello”, si otterrà la seguente pagina: Screenshot 4-20-Schermata ottenuta dopo aver inserito un prodotto nel carrello 103 CAPITOLO 4- CMS Zen Cart e CMS e-Commerce ____________________________________________________________________ Una volta nella pagina del carrello, sarà possibile vedere: il numero di articoli selezionati in quel ordine, il prezzo ed i costi di spedizione; inoltre verrà offerta la possibilità di eliminare e cambiare la quantità degli articoli scelti. Per confermare l‟ordine, basta premere sul pulsante “Checkout”, e si accederà alla schermata nella quale, se si è un cliente registrato basta inserire user e password per continuare il processo di chiusura dell‟ ordine, altrimenti, se si è un nuovo cliente, è necessario effettuare la registrazioni in modo che siano forniti user e password. Screenshot 4-21-Schermata in cui viene effettuato il Log-in al portale Una volta effettuato il log-in inserendo user e password, viene visualizzati i dettagli dell‟ordine, che se confermati, permettono di accedere ad una pagina in cui è necessario scegliere le modalità di pagamento dell‟ordine. Una volta inserita la modalità di pagamento, è possibile confermare l‟ordine e si accederà alla pagina in cui viene confermato che l‟ordine è stato eseguito correttamente. 104 CAPITOLO 4- CMS Zen Cart e CMS e-Commerce ____________________________________________________________________ 4.3.6.2 Administration Tool Una volta effettuato il login come amministratori, si avrà accesso al Pannello di Amministrazione di osCommerce, dal quale è possibile: modificare i settaggi del negozio online e vedere le statiche del negozio come ad esempio: il numero di visitatori del portale, lo stato degli ordini, il numero di clienti registrati, ecc. La schermata che si ottiene appena viene effettuato il login come amministratore è la seguente: Screenshot 4-22-Pannello di Amministrazione del sito online 4.3.7 LINK al sito Per maggiori informazioni relative al CMS osCommerce è possibile visitare il sito: http://www.oscommerceitalia.net. 105 CAPITOLO 5- CONCLUSIONI____________________________________________________________________ CAPITOLO 5 - CONCLUSIONI- 5.1 Introduzione In questo capitolo sono racchiuse le “somme finali” del lavoro fin qui presentato. In più nel paragrafo “Possibili Applicazioni” vengono descritte le caratteristiche di un progetto che è stato realizzato parallelamente a questo, ed ha come scopo quello di elaborare le informazioni ottenute tramite l‟utilizzo dell‟interfaccia progettata in questa tesi. In ultimo, nel paragrafo “Sviluppi Futuri” si parlerà di alcune soluzioni che possono essere adottate, con lo scopo di potenziare l‟interfaccia realizzata. 5.2 Considerazioni Finali Le pagine precedenti hanno mostrato come sia possibile realizzare un‟interfaccia che permette l‟estrapolazione di opportune informazioni dal contenuto di alcuni siti web, in modo tale che possono essere memorizzate in una base di dati per poi essere elaborate in modo adeguato. La condizione necessaria affinché l‟interfaccia possa funzionare in maniera efficiente, è quella che i sorgenti HTML delle pagine web da cui devono essere prelevate le informazioni siano ottenibili, dato che gli algoritmi che vengono utilizzati nella fase di estrapolazione delle informazioni vanno a “manipolare” il sorgente HTML delle pagine che costituiscono un sito web. Nel caso in cui viene soddisfatta questa condizione, l‟interfaccia realizzata in questo progetto può essere utilizzata per estrapolare qualsiasi tipo di informazioni dal contenuto di qualsiasi sito web. Infatti, le soluzioni adottate sia per prelevare il sorgente HTML di una pagina web e sia per la memorizzazione delle informazioni in una base dati, sono le stesse per entrambi i siti web forniteci dal richiedente 106 CAPITOLO 5- CONCLUSIONI____________________________________________________________________ dell‟interfaccia. Le uniche varianti si hanno nell‟implementazione degli algoritmi che permettono l‟estrapolazione delle informazioni dal sorgente HTML. Questo perché per la loro implementazione, vengono utilizzate delle funzioni PHP basate su espressioni regolari che permettono di rilevare la presenza di una sottostringa all'interno di una sequenza di caratteri principale. In questo studio la sequenza di caratteri principale coincide con il sorgente HTML di una pagina web, mentre la sottostringa da ricercare è l‟informazione da estrapolare dai tag HTML, dove questi ultimi sono diversi a seconda della struttura del sito e dal tipo di informazione da prelevare. Oltre alla realizzazione dell‟interfaccia, questo lavoro di tesi fornisce alcune informazioni utili per chi, per la prima volta, si affaccia al mondo dell‟e-commerce e vuole essere a conoscenza di alcuni approfondimenti su due CMS largamente utilizzati per la realizzazione di portali l‟e-commerce, ovvero il CMS Zen Cart ed il CMS OsCommerce. Sulla base dei risultati ottenuti nella fase di analisi dei due CMS e sfruttando anche delle informazioni presenti nei forum e nelle community ufficiali è possibile effettuare un confronto tra i due. Per quanto riguarda gli aspetti comuni tra i due CMS, è possibile dire che: sono software open source scritti in PHP per il commercio elettronico. La possibilità di visionare il codice sorgente del programma, consente ai programmatori di rilevare eventuali bug (errori) e segnalare possibili migliorie da effettuare al codice. All'interno delle comunità di sviluppo, capita spesso che un programmatore identifichi un errore e lo segnali tempestivamente al responsabile del progetto con allegato il codice corretto. Questo sistema permette dunque di far visionare il codice a più persone contemporaneamente e contribuisce a produrre programmi di qualità. Diversamente da quanto avviene nello sviluppo di software commerciale/proprietario, dove tipicamente è il marketing a definire le caratteristiche del prodotto, nel modello open source chi definisce le caratteristiche e l'evoluzione del software sono gli utenti della comunità di 107 CAPITOLO 5- CONCLUSIONI____________________________________________________________________ sviluppo. Questo significa che le applicazioni open source sono molto concrete in quanto devono rispondere a requisiti specifici segnalati dagli utilizzatori stessi del programma. I requisiti Server richiesti per l‟installazione dei due software sono gli stessi; infatti per il corretto funzionamento di entrambi è necessario avere a disposizione un Web Server in cui sia abilitato l‟utilizzo di script PHP e di un database in cui archiviare i dati. Le fasi di installazione sono simili. In entrambe è richiesto l‟utilizzo di un database, che deve essere creato prima che venga eseguita l‟installazione del software, in modo che possano essere memorizzate le informazioni relative alla configurazione inserite durante il processo di installazione. Entrambi offrono la modalità DEMO del software, scaricabile direttamente dai loro siti, che permette di effettuare delle operazioni di test. Prima di inserire i prodotti nel negozio,è necessario creare la Categoria dove si vuole collocarli. Le categorie consentono di raggruppare diverse sotto categorie e prodotti. Tuttavia, in circostanze normali, ogni categoria può contenere o prodotti o sotto categorie ma non entrambe contemporaneamente. Possibilità di scegliere diverse modalità di pagamento tra cui: modulo pagamento PayPal, modulo pagamento bonifico bancario, ecc. Possibilità di scelta tra diversi moduli di spedizione come: corrieri italiani Bartolini, pacco postale ordinario, pacco posta celere, ecc Presenza di Meta Tag dinamici;per una migliore indicizzazione del sito nei motori di ricerca. Per ogni singolo articolo presente nel portale è possibile accedere alla pagina di presentazione dello stesso, contenete le informazioni dettagliate di ogni singolo articolo. L‟email rappresenta il principale metodo di comunicazione del negozio, per informare i clienti sullo stato dei propri ordini e per rimanere aggiornati sullo stato di: richieste, ordini, magazzino e segnalazioni. Affinché possa essere portato a termine un ordine, è necessario effettuare il login-in inserendo nome utente e password. Quindi ogni cliente deve essere registrato al sito prima di conclude un ordine. Ad ogni ordine è associato uno stato 108 CAPITOLO 5- CONCLUSIONI____________________________________________________________________ Gestione in tempo reale del magazzino con monitoraggio e riordino automatizzato. Motore di ricerca interno al portale, che consente di ricercare tra i vari elementi del sito, dopo aver inserito una o più parole chiave. Possibilità di inserire Moduli Aggiuntivi, dove i moduli aggiuntivi sono delle integrazioni e/o modifiche del programma per gestire aprticolari condizioni e/o funzionalità. Alcuni di questi moduli aggiuntavi si possono scaricare dai rispettivi siti dei due CMS. Dalla pagina di amministrazione del portale è possibile: impostare la lingua predefinita per il negozio online scegliere :il tipo di valuta, gli idiomi, l‟unità di misura., le modalità di pagamento e le basi per il calcolo delle tasse Aggiungere e modificare categorie, sotto categorie e prodotti Modifica degli stati di un ordine Gestione dei clienti registrati al sito In molte community, Zen Cart viene definito come un fork (cioè una derivazione ) di osCommerce. Il software di Zen Cart, con il passare del tempo, è stato sviluppato ed ha preso una direzione differente rispetto a quello di osCommerce, anche se resta attualmente piuttosto simile. Sulla base di questa definizione, di seguito sono elencati gli aspetti in contrasto tra i due CMS. Grazie alla natura open source del software,come già detto, sia Zen Cart che osCommerce hanno a disposizione una comunità di supporto internazionale molto vasta anche se la community di Zen Cart risulta essere inferiore rispetto a quella di osCommerce; per questo motivo gli aggiornamenti, i plugin e la correzione dei bug nel software di Zen Cart non sempre vengono rilasciati con tempestività rispetto a quanto accade, invece, per osCommerce. osCommerce è “più statico”e più difficile da modificare osCommerce è più difficile da adattare a template personalizzati Il codice sorgente di ZenCart, secondo molti programmatori, è più ostico da comprendere 109 CAPITOLO 5- CONCLUSIONI____________________________________________________________________ Zen Cart è più attivo dal punto di vista del rilascio delle versioni più aggiornate; osCommerce, invece , è fermo da più tempo sullo stesso codice; Zen Cart offre maggiore sicurezza nel trattamento dei dati sensibili rispetto ad osCommerce. Ad esempio nella vecchia versione di osCommerce RC 2.2 (ora abbandonata) era possibile accedere ad alcune sezioni dell‟Area Amministrativa senza aver bisogno di effettuare alcun login. 5.3 Possibili applicazioni L‟interfaccia progettata in questo lavoro di tesi è stata utilizzata per la realizzazione del progetto il cui titolo è: “PROGETTAZIONE E IMPLEMENTAZIONE DI UN MODULO ZEN CART PER LA GESTIONE DI PRODOTTI PARAFARMACEUTICI” sviluppato dal laureando Seri Daniele. Lo scopo del suo progetto è quello di implementare un‟ interfaccia che elabora le informazioni ottenute attraverso l‟utilizzo di quella progettata e realizzata in questo lavoro di tesi. L‟elaborazione consiste nella realizzazione di un modulo aggiuntivo Zen Cart che consente la gestione di prodotti parafarmaceutici. 110 CAPITOLO 5- CONCLUSIONI____________________________________________________________________ 5.4 Sviluppi Futuri L‟interfaccia realizzata per questo lavoro di tesi permette di prelevare le informazioni relative ai prodotti parafarmaceutici presenti all‟interno di due portali di e-commerce di interesse da parte del richiedente. Un possibile potenziamento futuro sarà quello di prelevare le informazioni presenti all‟interno di altri portali di vendita di parafarmaci. Per fare questo, sarà necessario aggiungere alle funzionalità in possesso della nostra interfaccia le opportune funzioni che consentono di estrapolare e di memorizzare le nuove informazioni. Un‟ interfaccia così definita, consentirà all‟utente di avere a disposizione una maggiore quantità di informazioni sulle quali operare le proprie scelte di mercato. 111 RINGRAZIAMENTI ____________________________________________________________________ RINGRAZIAMENTI In queste poche righe voglio ringraziare chi in un modo o nell‟altro hanno fatto si che oggi stia scrivendo i Ringraziamenti della mia tesi di laurea. Desidero ringraziare il Prof. Aldo Franco Dragoni, relatore di questa tesi, per l'incarico assegnatomi e la fiducia accordatami, i responsabili della Farmacia Blasi Dott. Giuseppe per l‟opportunità fornita ed il Dott. Andrea Claudi per la grande disponibilità e cortesia dimostratemi, e per tutto l‟aiuto fornito durante la stesura del lavoro. Un sentito ringraziamento va a Babbo e Mamma che, con il loro incrollabile sostegno morale ed economico, mi hanno permesso di raggiungere questo traguardo. Ringrazio l‟Ing. Emanuela Egidi (mia sorella) per i consigli, per le telefonate di conforto e per avermi inculcato la sua “testardaggine”; un altro ringraziamento va al suo “Sposo” Mauro per la sua disponibilità e i suoi consigli su come marcare gli attaccanti. Più di un ringraziamento deve essere spedito verso l‟alto, lassù nel cielo, a nonno Gino e nonna Maria perché, oltre ad avermi insegnato da piccolo le tabelline, cosa vuol dire il sacrificio e come affrontate la vita, mi hanno aiutato nel superamento d‟ogni esame. Un altro ringraziamento verso l‟alto va a Zio Bruno “Il Prof” perché mi ha dato tanto e continua a darmi ancora tanto, dopo “le tesine” per l‟esame: di quinta elementare, di terza media e di maturità, questa è l‟unica volta che non ho la possibilità di potergli far leggere la tesi prima di consegnarla, ma se già la sto scrivendo, molto merito è suo. Un ringraziamento particolare è per Nonno Arturo e Nonna Pina perché semplicemente mi voglio bene e hanno avuto sempre fiducia in me. Vorrei ringraziare la mia seconda famiglia, per avermi aspettato ogni giorno per il caffè ed il dopo caffè ed il dopo dopo caffè. Un pensierino và alle dolci parole e sempre piene di significato di Laura e al “furetto tuttofare” di Fabio. L‟ultimo ringraziamento, non per ordine di importanza, va a tutti i miei amici di Porchia, Motalto, Montedinove, a quelli che ho incontrato durante il percorso dell‟università e agli amici-colleghi .Vorrei nominarli uno per uno ma sarei sicuro di 112 RINGRAZIAMENTI ____________________________________________________________________ commettere il banalissimo errore di dimenticarne qualcuno, per questo gli dico semplicemente GRAZIE. Vorrei concludere il tutto riportando una frase nominata più volte da mia sorella durante la sua “storia” universitaria, ma che in questo momento può essere adattata alla mia situazione: “Ho terminato i mattoncini, un muretto è stato costruito, è giunto il momento di farne uno nuovo”. 113 BIBLIOGRAFIA ____________________________________________________________________ BIBLIOGRAFIA Libri 1. Carniel S., Valentina Maggioni, Paolo De Dionigi, Manuale e-commerce Zen Cart. Il manuale approfondito per allestire e gestire un negozio Zen Cart, Firenze, Phasar, 2007 2. Chaffay D.,Mayer R.,Johnston,Ellis-Chadwick F.,Internet Marketing:Strategy, Implementation and Practice,Milano, Apogeo,2001 3. Davis M. E.,Phillips J.A.,Programmare in PHP e MySQL ,Milano,Tecniche Nuove,2008 4. Foglio A.,E-commerce e Web marketing: strategie di web marketing e tecniche di vendita in Internet,Milano, Franco Angeli,2008 5. Paolillo R.,Il Check-up dei siti Web,Milano,Apogeo, 2004 Sitografia 1. PHP: Hypertext Preprocessor, http://www.php.net 2. Zen Cart Tutorial, http://www.siteground.com/tutorials/zencart/ 3. osCommerce,Open Source Online Shop E-commerce Solutions , http://www.oscommerce.com/ 4. OsCommerce Community Add-Ons, http://addons.oscommerce.com/ La data dell‟ultimo accesso alle URL citate è:16-07-2011 114