Hvorfor virker dynamisk SSI ikke?

Af David Trasbo

Opdateret: 20-10-2011

Lad os antage at vi har følgende filer:

default.asp, side1.inc, side2.inc og side3.inc.

De tre tekstfiler indeholder tekst, som skal hentes ind eller inkluderes i default.asp. Hvis adressen for eksempel er dinside.dk/default.asp?id=side1 skal side1.inc inkluderes og så videre.

Men dette kan ikke gøres med SSI, der ligner nedenstående:

<!--#include file="<%=Request.Querystring("id")%>.inc"-->

Hvorfor ikke? Fordi SSI bliver afviklet før ASP, så filen der bliver ledt efter er i virkeligheden: <%=Request.Querystring("id")%>.inc, og den eksisterer umiddelbart ikke.

Alternativer

Hvis du i stedet bruger ren ASP, vil det virke:

<%
side_id = Request.Querystring("id")
if side_id = "" Then
side_id = "nothing" 'default indhold hvis intet er specifiseret
end if
Server.Execute(side_id & ".inc")
%>

Hvis querystring er tom vises nothing.inc som kun indeholder &nbsp;. Ønskes side1.inc som standard, skriver man bare den ind i listen.

Du kan også bruge lidt SSI, men metoden er langt mere besværlig:

<% If Request.Querystring("id") = "side1" then %><!--#include file="side1.inc"-->
<% ElseIf Request.Querystring("id") = "side2" then %><!--#include file="side2.inc"-->
<% ElseIf Request.Querystring("id") = "side3" then %><!--#include file="side3.inc"-->
<% Else Response.write "<p>Ingen fil valgt.</p>" %>

Nu mangler vi bare kaldet til det inkluderede indhold:

<a href="side.asp">[Luk boks]</a> -
<a href="side.asp?id=side1">[Link 1]</a> -
<a href="side.asp?id=side2">[Link 2]</a> -
<a href="side.asp?id=side3">[Link 3]</a>

[Luk boks] - [Link 1] - [Link 2] - [Link 3]

 

Retur til [FAQ]Retur til [FAQ]

Gå til toppen af sidenArtikler om HTML

Gå til toppen af sidenFAQ-svar om HTML

Gå til toppen af sidenKodebasen om HTML

Page copy protected against web site content infringement by Copyscape

xhtml css


Brugere nu: 1
Printer
Home