By 2 Dicembre 2010 0 Comments

Differenza tra Include e Include Virtual

Sui nostri server con sistema operativo Windows Server 2003, per le include e per il metodo MapPath dell’oggetto Server è necessario utilizzare percorsi virtuali assoluti la cui radice corrisponde alla root web del vostro sito. Qualora nei vostri script utilizziate include di tipo file od in generale percorsi fisici relativi, che iniziano con ../, qui di seguito riportiamo utili indicazioni che con semplici modifiche vi consentiranno di utilizzare a pieno questi due strumenti di IIS.
Facendo riferimento a URL assoluti, se il vostro sito è vostrodominio.it, la radice del vostro sito, che secondo la sintassi unix si indica con il simbolo / corrisponde all’indirizzo https://www.vostrodominio.it
Anteponendo il simbolo / potrete quindi indicare qualsiasi percorso all’interno del vostro spazio. Ad esempio:
<B>URL: https://www.vostrodominio.it/connessioni/connessione.asp
percorso virtuale: /connessioni/connessione.asp
include: <!– #include virtual=”/connessioni/connessione.asp” –>
Server.MapPath: Server.MapPath(“/connessioni/connessione.asp”)
URL: https://www.vostrodominio.it/variabiliglobali.asp
percorso virtuale: /variabiliglobali.asp
include: <!– #include virtual=”/variabiliglobali.asp” –>
Server.MapPath: Server.MapPath(“/variabiliglobali.asp”)
URL: https://www.vostrodominio.it/testi/cultura/dolcestilnovo.html
percorso virtuale: /testi/cultura/dolcestilnovo.html
include: <!– #include virtual=”/testi/cultura/dolcestilnovo.html” –>
Server.MapPath: Server.MapPath(“/testi/cultura/dolcestilnovo.html”) </B>
Si capisce subito quanto sia più potente l’utilizzo di percorsi virtuali piuttosto che percorsi relativi per raggiungere i contenuti del vostro sito: le istruzioni di include o di Server.MapPath rimarranno identiche in qualsiasi posizione del vostro sito siano eseguite. Se dovete spostare uno script asp o shtml che ha una include di tipo virtual non dovrete modificare il percorso dell’include analogamente, per includere uno script in un qualsiasi altro script ovunque posto all’interno del vostro spazio web, la riga di codice che realizza l’include sarà sempre la stessa.
<B>Esempio 1: </B>
Le include sono utilizzate per non ripetere parti di codice uguale ripetutamente nelle pagine del vostro sito, e per rendere più facili le modifiche. In questo esempio si suppone di includere la testata del sito, identica per tutte le pagine, posta al percorso https://www.vostrodominio.it/layout/header.html, in qualsiasi pagina asp o shtml
supponiamo di voler includere nello script a questo url: https://www.vostrodominio.it/index.asp la pagina che si trova all’url: https://www.vostrodominio.it/layout/header.html.
utilizzando una include di tipo file, dovreste aggiungere nello script index.asp la riga:
<!– #include file=”layout/header.html” –>
utilizzando una include di tipo virtual, dovreste aggiungere nello script index.asp la riga:
<!– #include virtual=”/layout/header.html” –>
Come potete osservare, in questo caso tra il percorso utilizzato nella include virtual rispetto alla include file, è presente il solo simbolo / come differenza.
Continuiamo nella nostra analisi.
supponiamo di voler includere nello script a questo url: https://www.vostrodominio.it/guestbook/index.asp la pagina che si trova all’url: https://www.vostrodominio.it/layout/header.html.
utilizzando una include di tipo file, dovreste aggiungere nello script index.asp la riga:
<!– #include file=”../layout/header.html” –>
utilizzando una include di tipo virtual, dovreste aggiungere nello script index.asp la riga:
<!– #include virtual=”/layout/header.html” –>
Questo esempio mostra in maniera evidente come l’include di tipo virtual rimane invariata indipendentemente dalla posizione dello script che la utilizza, mentre la include di tipo file, contenendo un percorso relativo, deve essere modificata a seconda della posizione dello script che la utilizza.
<B>Esempio 2:</B>
Anche nel caso di Server.MapPath il discorso è del tutto analogo. Supponiamo di voler leggere il file di testo posto all’url: https://www.vostrodominio.it/contenuti/listino.txt
attraverso la libreria vbscript Scripting.FileSystemObject.
Tale libreria ha bisogno del percorso fisico del file, che in ASP si ricava utilizzando appunto il metodo MapPath dell’oggetto Server.
Vogliamo leggere il file https://www.vostrodominio.it/contenuti/listino.txt dallo script https://www.vostrodominio.it/mostralistino.asp. Le righe di codice da utilizzare sono le seguenti:
percorso relativo
percorsofile = Server.MapPath(“contenuti/listino.txt”)
Set oggettoFileSystem = Server.CreateObject(“Scripting.FileSystemObject”)
Set oggettoFile = oggettoFileSystem.OpenTextFile(percorsofile, 1)
percorso virtuale
percorsofile = Server.MapPath(“/contenuti/listino.txt”)
Set oggettoFileSystem = Server.CreateObject(“Scripting.FileSystemObject”)
Set oggettoFile = oggettoFileSystem.OpenTextFile(percorsofile, 1)
In questo caso tra il percorso virtuale indicato nel Server.MapPath rispetto al percorso relativo vi è solo il simbolo / come differenza. Consideriamo il caso seguente.
Vogliamo leggere il file https://www.vostrodominio.it/contenuti/listino.txt dallo script https://www.vostrodominio.it/gadget/italiano/mostralistino.asp. Le righe di codice da utilizzare sono le seguenti:
percorso relativo
percorsofile = Server.MapPath(“../../contenuti/listino.txt”)
Set oggettoFileSystem = Server.CreateObject(“Scripting.FileSystemObject”)
Set oggettoFile = oggettoFileSystem.OpenTextFile(percorsofile, 1)
percorso virtuale
percorsofile = Server.MapPath(“/contenuti/listino.txt”)
Set oggettoFileSystem = Server.CreateObject(“Scripting.FileSystemObject”)
Set oggettoFile = oggettoFileSystem.OpenTextFile(percorsofile, 1)
Analogamente a quanto osservato per le include, anche nel caso di Server.MapPath il percorso virtuale rimane invariato indipendentemente dalla posizione dello script che lo utilizza, mentre indicare percorsi relativi comporta il dover ricavare un nuovo percorso ogni volta che si richiama un file da una posizione differente, aumentando la possibilità di commettere errori nella stesura del codice.


About the Author:

shared on wplocker.com