Avatar billede Slettet bruger
23. oktober 2006 - 23:20 Der 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

set fs = nothing
%>
Avatar billede 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
:)
Avatar billede softspot Forsker
23. oktober 2006 - 23:26 #2
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...
Avatar billede softspot Forsker
23. oktober 2006 - 23:31 #3
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.
Avatar billede sneakraid Nybegynder
23. oktober 2006 - 23:33 #4
Som du kan gøre sådan her:

<%
page = Request.QueryString("page")

On Error Resume Next

Select Case page
Case(""): Server.Execute("pages/forsiden.asp")
Case Else: Server.Execute("pages/" & type & ".asp")
End Select

If Err.Number <> 0 Then
  Response.Write("Siden findes ikke.")
End If
%>
Avatar billede softspot Forsker
23. oktober 2006 - 23:34 #5
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...
Avatar billede 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 :)
Avatar billede sneakraid Nybegynder
23. oktober 2006 - 23:53 #7
:)
Avatar billede softspot Forsker
24. oktober 2006 - 00:23 #8
Fint nok :)
Avatar billede Slettet bruger
24. oktober 2006 - 10:36 #9
Så er de udleveret :) takker igen.
Avatar billede softspot Forsker
24. oktober 2006 - 10:53 #10
Tak for point :)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester