In questo articolo, verrà illustrato come crearsi da soli, senza bisogno quindi di appoggiarsi ad altri, un semplicissimo e praticissimo circuito di rotazione per i propri banners.
E lo faremo in modo che funzioni anche se richiamato da normalissime pagine HTML.
Per cominciare...
... si consiglia di approfondire le proprie conoscenze per quanto concerne l'accesso ai database tramite ASP (si veda l'apposito tutorial ). Essendo un progetto abbastanza complesso, si presuppone una conoscenza abbastanza approfondita delle tecniche di programmazione ASP.
Si inizia!
Lo scopo del nostro progetto è quello di creare un sistema di rotazione banner semplice ed immediato da implementare.
Per questo useremo un semplice database Access, e cercheremo di essere il meno possibili dipendenti dall'amministratore del server, in modo da essere produttivi in poco tempo.
Primo passo, prima di ogni altro, è quello di creare il database in cui andremo a memorizzare tutti i nostri dati.
Creiamo in Access una nuova tabella, e diamole come nome "banners". All'interno di questa tabella, andiamo a definire i vari campi.
Un riassunto si trova nella tabella sottostante.
Nome | Tipo | Ordine |
ID | Primary Key | 0 |
URL | Text(150) | 1 |
Immagine | Text (200) | 2 |
Impressions | Long | 3 |
L'ordine in cui vanno inseriti è esattamente quello mostrato nella tabella. Un ordine diverso potrebbe portare a malfunzionamenti del codice.
Potere alla fantasia
Creato il database, non ci resta che occuparci del codice ASP.
In questo articolo tratteremo la creazione di un semplice sistema, ma è utile sapere che a partire da questo se ne possono creare delle varianti molto interessanti, che ad esempio mostrano certi banner solo in certe aree/pagine, o che li mostrano solo a certi orari, etc...
Il mio intento, invece, è solo quello di tracciare la strada, lasciandovi il compito di eventuali personalizzazioni.
Il primo passo
Siccome vogliamo gestire tutto da una pagina, sarà bene dividere usando un semplice parametro (quale un valore di un campo GET), da inserire quando andiamo a richiamare il banner dalle nostre pagine, o quando lo linkiamo.
Detto questo, creiamo un nuovo file e chiamiamolo banner.asp . Scriviamoci dentro queste prime righe:
Response.Expires=0 Response.Buffer=True informazioni="/banner/" predefinita="/banner/images/predefinito.gif"
Ci servono per fare funzionare tutto per il meglio.
L'analisi delle prime due si tralascia, visto che dovrebbe essere nota a chi si accinge ad implementare questo progetto.
Invece l'uso delle variabili "informazioni" e "predefinita" risulta alquanto interessante. Infatti al loro interno andrà specificato, rispettivamente, una pagina web a cui rimandare in caso di errori, ed un'immagine da mostrare sempre in caso di errori, come nel caso non sia possibile visualizzare altri banner, in quanto le relative impressions sono state esaurite.
La gestione del reindirizzamento
A quanto appena inserito, dobbiamo aggiungere, sempre nella stessa pagina, questo codice:
if Request.QueryString("action")="go" then ' routine di gestione reindirizzamento if len(Session("sponsor_banner"))>0 then sponsor=Split(Session("sponsor_banner"),"|") else dim sponsor(1) sponsor(0)=informazioni sponsor(1)=0 end if Session("sponsor_banner")="" if Len(sponsor(0))>0 then Response.Redirect(sponsor(0)) else Response.Redirect(informazioni) end if
Questo codice, oltre al reindirizzamento vero e proprio, si occupa anche della gestione di tutti gli eventuali errori che possano capitare in questa fase, come la mancanta creazione dell'oggetto Session, tramite cui i dati vengono passati dal modulo di visualizzazione dell'immagine a quello di reindirizzamento verso l'url associato a questa immagine.
E per finire...
...ecco il codice che si occuperà della gestione delle immagini:
elseif Request.QueryString("action")="display" then Session("sponsor_banner")=Null dbfile=Server.MapPath("/banner/banner.mdb") Set OBJdbConnection=Server.CreateObject("ADODB.Connection") OBJdbConnection.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&dbfile Set rs=Server.CreateObject("ADODB.Recordset") rs.ActiveConnection=OBJdbConnection rs.CursorType=1 rs.LockType=2 rs.Source="banners" rs.Open Dim url Dim img Dim ids rec_count=Rs.RecordCount ReDim url(rec_count) ReDim img(rec_count) ReDim ids(rec_count) max=0 Do until rs.EOF if rs.Fields(3).Value>0 then max=max+1 ids(max)=rs.Fields(0).Value url(max)=rs.Fields(1).Value img(max)=rs.Fields(2).Value end if rs.MoveNext loop Randomize scelto=Int(Rnd*max)+1 rs.MoveFirst Do until rs.EOF if ids(scelto)=rs.Fields(0).Value then hits=rs.Fields(3).Value-1 rs.Update 3, hits exit do end if rs.MoveNext loop if max=0 then sponsor=informazioni image=predefinita else sponsor=url(scelto) image=img(scelto) end if Session("sponsor_banner")=sponsor&"|"&ids(scelto) ReDim url(0) ReDim img(0) ReDim ids(0) Erase url Erase img Erase ids scelto=Null max=Null sponsor=Null rs.Close OBJdbConnection.Close set rs=Nothing Set OBJdbConnection=Nothing Response.ContentType="image/gif" Response.Redirect(image) ' visualizza il banner else ' routine di intercettazione furboni... ;-) Response.Redirect(informazioni) end if
Il codice è di facile comprensione, per cui mi limiterò a spiegare il suo funzionamento in generale.
Come prima cosa è necessario specificare nella variabile dbfile il nome del database Access, completo di percorso.
Questo codice si occupa di trovare il numero totale di records nella tabella corrente, e creare dei vettori dinamici, in modo da immagazzinarci dentro le informazioni che verrano usate in seguito per completare l'opera.
Quindi passa ad immagazzinare nei vari vettori solo quei record il cui campo 3 (cioè quello corrispondente alle impressions) contenga un valore maggiore di 0.
Sceglie un numero a caso, e va a pescare i dati relativi a quel numero nei vari vettori.
Il resto è presto detto: reindirizza l'utente alla gif, e crea la variabile di sessione tramite l'oggetto Session, in modo che il modulo di reindirizzamento sia in grado di ricostruire l'indirizzo a cui rimandare al momento del click.
Nota: l'approccio usato (quello con i vettori) può essere tranquillamente sostituito con un altro, tuttavia credo che sia il modo migliore e più pratico. Inoltre l'uso di vettori dinamici permette di liberare memoria alla fine dell'esecuzione della pagina, rendendo più performante la nostra applicazione.
Ed ora: proviamolo!
Per provare se tutto è andato a buon fine, possiamo usare questo codice HTML, che funzionerà da qualsiasi pagina web:
<a href="/banner/banner.asp?action=go"> <img src="/banner/banner.asp?action=display"> </a>
Se tutto sarà andato a buon fine, ed avrete aggiunto delle campagne nel vostro database, allora potrete vedere il vostro ultimo lavoro all'opera!
Naturalmente questo è un sistema rudimentale, simile in tutto e per tutto a quanto fa il component ADRotator fornito con il web server. Tuttavia con un minimo di sforzo in più è possibile personalizzarlo ulteriormente, magari aggiungendo un comodo sistema di logging, oppure un filtro per data, o meglio ancora, per pagina web.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.