Vilken att bäst att använda utav dessa??
<% If Request.QueryString("avd") = "miljo" Then %>
<% sida = ReQuest.QueryString("sida")
Select Case sida
Case ""
Server.Execute("miljo.asp")
Case Else
Server.Execute sida & ".asp"
End Select %>
Eller:
<!--#Include file="miljo.asp"-->
Jag själv föredrar Server.Execute, då exekverar man bara en sida.
Med SSI så inkluderar man en sida, och tar förmodligen mer resurser. :)
Helt enkelt - Server.Execute är mer prestandavänligt. :)
VideMedlem sedan dec. 19998 577 inlägg ... men dom används ju för olika saker.
SSI är för att inkludera ett dokument före ASP-tolken tolkar sidan, och på så sätt kunna inkludera körbar kod.
Execute används för att köra en sida med ASP-tolken för att sedan få tillbaka resultatet av körningen som vanlig text.
OveRRidEMedlem sedan feb. 200112 078 inlägg Använder du server.execute kan du inte anropa någon kod i den filen som inkluderas, resultatet av den bara pumpas in i din befintliga sida.
Använder du include kan du använda t.ex. objekt, variablar eller liknande delar i dni befintliga sida. Grejen med att använda includes och if-satser är att även om ett specifikt if-villkor inte uppfylls, så kommer koden från include:en köras ändå, då SSI körs före ASP på servern.
Sen finns ju server.transfer också, men den behöver nog inte du tänka på.
En sak bara: med din nuvarande Server.Execute-kod så kan man om man vill vara elak (och du har en hemlig admin-fil nånstans) exekvera en admin-fil som du vill att användare inte ska ha tillgång till. I stället för att surfa till default.asp?sida= när villkoret Case Else är uppfyllt, så kan man t.ex. surfa till default.asp?sida=admin.asp och det vore ju inte bra. Så här ser mer säker kod ut:
...
Case Else
Server.Execute("404.asp")
..
OveRRidEMedlem sedan feb. 200112 078 inlägg
m_soderlund skrev:
En sak bara: med din nuvarande Server.Execute-kod så kan man om man vill vara elak (och du har en hemlig admin-fil nånstans) exekvera en admin-fil som du vill att användare inte ska ha tillgång till. I stället för att surfa till default.asp?sida= när villkoret Case Else är uppfyllt, så kan man t.ex. surfa till default.asp?sida=admin.asp och det vore ju inte bra. Så här ser mer säker kod ut:
...
Case Else
Server.Execute("404.asp")
..
Visserligen spelar det ju inte så stor roll, då en querystring fortfarande är exponerad och antagligen inte validerad innan den manglas på genom server.execute. Man kan alltså skriva vad man vill i qs:en ändå.
En valideringskontroll på om sidan verkligen är en del av content-delen borde var på sin plats istället.
En lite basic grej som kan vara smidig.
Dim lPage, vPage
lPage = CLng(Request.QueryString("Page"))
vPage = Array("standard.asp", "snafu.asp", "foo.asp", "bar.asp", "ogrish.asp")
Server.Execute vPage(lPage)
Då exponeras inte ASP-sidan i querystringen. Snyggare och säkrare känns det som...