23. oktober 2006 - 23:20Der er
8 kommentarer og 2 løsninger
Min include laver ikke ASP koden.
Hej, jeg har et lille stykke kode som gør at jeg ka inkludere en fil og samtidig benytte fx ?page=hej, til at finde ud af hvilken fil der ska inkluderes.
Problemet er så bare: Hvis jeg har inkluderet en ASP-fil med tilhørende stykke ASP-kode, bliver ASP-koden skrevet ud som almindelig tekst, men alt andet html og css kode bliver skrevet rigtigt.
Hvorfor? Og kan i hjælpe?
<% dim page page = request.querystring("page")
function include(fil) dim fso set fso = CreateObject("Scripting.FileSystemObject") set incfile = fso.OpenTextFile(Server.MapPath(fil), 1) include = incfile.ReadAll incfile.close end function
set fs = Server.CreateObject("Scripting.FileSystemObject")
if page = "" then %> <!--#include file="forsiden.asp" --> <% elseif fs.FileExists(server.mappath(page & ".asp")) then response.write(include(page & ".asp")) else response.write("Filen eksisterer ikke.") end if
Modernisering af ældre on-premise-applikationer til cloud-løsninger er en topprioritet for virksomheder globalt.
Slettet bruger
23. oktober 2006 - 23:21#1
I må også gerne komme med andre løsningsforslag, koden skal bare kunne tjekke om filen eksistere, hvis den ikke gør det, ska den skrive at den ikke eksistere, men hvis den eksisterer skal den inkludere filen. Og filens navn fåes fra fx ?page=trolden - Alt inkluderes trolden.asp :)
Ja, det er fordi du skal sørge for at fortolke ASP-koden inden du smider den ud på response.strømmen.
#include-direktivet er en pre-compiler ting som køres inden ASP-koden fortolkes, dvs. alt koden stykkes sammen af includes og selve siden inden ASP smider den i hovedet på fortolkeren. Det du gør sker når siden er igang med at blive fortolket, hvilket er for sent... med mindre du altså selv håndterer den opgave med at fortolke koden...
Det kan i nogen udstrækning klares med den indbyggede Execute-kommando i VBScript, men det er ikke bare lige noget man gør, da du skal skille koden og HTML/tekst ad og kun fortolke VBScript-koden i den side du inkluderer...
Umiddelbart vil jeg anbefale at du kaster dig over Server.Execute i stedet for, da den er bedre integreret i ASP og iflg. min opfattelse performer bedre end includes, da sider der kaldes med Server.Execute kan caches af IIS.
Ulempen ved sider kaldt med Server.Execute er at du ikke kan dele globale variable (nogen vil nok kalde det en fordel), men du kan godt få adgang til ASP-objekter, så som Request.QueryString, Request.Form, Session osv.
Pas i øvrigt på med at lade en querystring-parameter være direkte identifikation af en side som du vil indlæse. Du skal sørge for at kontrollere om det er en korrekt og lovlig side at indlæse, da du ellers risikerer at en snedig bruger gennemskuer din navngivning og indlæser "hemmelige sider" ved at angive navnet i page-parameteren...
Synes godt om
Slettet bruger
23. oktober 2006 - 23:41#6
Det var dog utroligt som i kan hive de gode koder op af ærmet :) Jeg takker og bukker.
Desuden passer jeg skam på med hvordan jeg laver det :) det bliver ikke kun lavet ved at sætte en .asp bagpå, men også ved at sætte nogle andre tegn foran siden, så er den ikke helt nem at gennemskue.
Nu står jeg lidt med et problem, for softspot svarede kanon med vejledning Imens sneakraid svarede præcis med den kode jeg skulle bruge, Hvis i begge to smider et svar, så kan i vel dele pointsne :)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.