Avatar billede smiley2 Nybegynder
13. juni 2000 - 01:01 Der er 11 kommentarer og
1 løsning

SSI

Jeg vil gerne include en fil i min ASP side. Hvilken fil, skal afhænge af en
variabel, der bliver sat af input fra request.querystring.

Altså noget ala:

<!-- #include virtual = "/includes/(VarInclude).inc" -->

Lader det sig gøre?
Avatar billede erikjacobsen Ekspert
13. juni 2000 - 01:20 #1
Nej, det kan man ikke i ASP. #includerne bliver udført inden ASP-maskinen går i gang,
og dermed kan man ikke bruger variabler og funktioner fra ASP til fil-navnet. (I PHP kan
man naturligvis .... hehe)
Avatar billede lp Nybegynder
13. juni 2000 - 01:24 #2
johhh, det passer nu ikke helt erikjakobsen.....

i den seneste serviceudgave tillader man faktisk dette, jeg har dog endnu ikke testet det selv, men jeg vil da benytte dette spørgsmål til at få kigget på det og vende tilbage imorgen.........så må vi se om jeg været helt slævøjet da jeg læste det........

/LP
Avatar billede roslev Nybegynder
13. juni 2000 - 01:33 #3
...man ku' jo også lave en redirect baseret på request.querystring - dog ikke så smart..
Avatar billede ortrak Nybegynder
13. juni 2000 - 01:35 #4
i IIS 5 kan man bruge Server.Execute, men som erikjacobsen rigtig siger så køres ASP'en først efter includerne. Og så lige den sædvanlige sammenligning med PHP :-]

/ortrak
Avatar billede emil Nybegynder
13. juni 2000 - 01:47 #5
>>lp: Jeg er ret overbevist om at man ikke kan sætte det op så man får udført ASP-kode før sin 'include', heller ikke i IIS 5.0 (er i hvert fald ikke stødt på noget i litteratur omkring IIS 5.0).
Hvad man imidlertid kan gøre i IIS 5.0 er at bruge den nye execute-metode. Så i stedet for
'<!-- #include virtual = "/includes/(VarInclude).inc" -->'
kan man lave
'<% Server.Execute VarInclude & ".asp" %>'
Slutresultatet (dvs. det brugeren får at se) er det samme.

</emil>
Avatar billede smiley2 Nybegynder
13. juni 2000 - 02:06 #6
Jeg prøver:

<%    server.execute(VarInclude & ".inc") %>

Jeg får:

Fejltype:
Serverobjekt, ASP 0228 (0x80004005)
Kaldet til Server.Execute mislykkedes under indlæsningen af siden.
/freak/include/redirect.inc, line 1

- men jeg ved heller ikke så meget om server.execute...
Avatar billede ortrak Nybegynder
13. juni 2000 - 09:08 #7
smiley2:
og så lige 64000 kr. spørgsmålet: bruger du IIS 5?

/ortrak
Avatar billede emil Nybegynder
13. juni 2000 - 09:38 #8
Jeg går ud fra at du bruger IIS 5.0 (dvs. at du kører windows 2000) siden at fejl-meddelsen ikke brokker sig over at kaldet ikke findes.
Jeg er ikke sikker, men det kan muligvis tænkes, at siden skal have '.asp'-endelse for at det fungerer korrekt. Derudover lyder det efter filnavnet at dømme, som om du laver noget 'redirect' i din include-fil. Dette kan selvfølgelig kun lade sig gøre, hvis du ikke allerede har sendt html-headere afsted til browseren. Anyway, kunne det måske være en ide at se kildekode til din include-fil.

Under alle omstændigheder bør man faktisk altid bruge '.asp'-endelse på alle sine include-filer, medmindre der ikke er fortrolige data på siden.
Dette skyldes at hvis folk kan gætte stien til ens include-filer, og man bruger '.inc'-endelser, så kan de faktisk se ens asp-kode!
Derfor; brug altid '.asp'-endelser medmindre man blot definerer konstanter som det fx. er tilfældet med 'adovbs.inc', eller medmindre det er ren html.

</emil>
Avatar billede smiley2 Nybegynder
13. juni 2000 - 17:00 #9
Jeg kører Windows 2000 og IIS 5 - Jeg omdøbte include-filerne til ".asp" uden held.

Include filerne ingår i mit design. De indeholder selve brødteksten. Det skal bruges ASP i nogle af filerne til database-adgagng m.m., men alt redirect foregår inden jeg overhovedet når så langt som til include.

Altså.. jeg skal simpelt hen bruge funktionen til navigering på mit site.. include filerne er de forskellige sider, som skal kaldes med Server.Execute afhøngig af request.querystring("side").

Du spørger efter koden... Gerne, men jeg er ikke begyndt på include-siderne endu, så det hele er ret enkelt:

main.asp (include fil):

<P>Velkommen til min hjemmeside. Her kan du finde info de nyeste film.</P>
<P>Tag et kig på mine sider, hvis du skal en tur i biffen.</P>

Kender I nogle URLs hvor Server.Execute beskrives nærmere?
Avatar billede smiley2 Nybegynder
13. juni 2000 - 17:12 #10
Jeg begyndte at lege lidt... med denne kode:

<% server.execute("<!-- #include virtual = includes/main.asp -->") %>

får jeg flg fejl:

Serverobjekt, ASP 0231 (0x80004005)
Der blev brugt en ugyldig URL-adresse eller en fuldt kvalificeret absolut URL-adresse. Brug relative URL-adresser.

Det ser ud til, at den er begyndt, at fatte, hvad jeg prøver på... Kan det passe? eller er jeg helt i skoven?

Hvorddan får jeg den URL til at være relativ?
Avatar billede ortrak Nybegynder
13. juni 2000 - 17:27 #11
prøv:

<%    server.execute(Server.MapPath(VarInclude & ".asp")) %>


/ortrak
Avatar billede smiley2 Nybegynder
13. juni 2000 - 20:15 #12
Jeg fik det til at virke...

Der skal en "/" foran URL'en

altså:

<% server.execute("/includes/" & VarInclude & ".asp") %>

Forresten tak for tippet om at kalde inlcude-filerne ".asp" - det giver jo også sig selv.. hvad tænker jeg på? ;o)
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