Avatar billede Slettet bruger
27. oktober 2005 - 12:29 Der er 7 kommentarer

Response og request hjælp (Querystring)

Jeg er ved at lave om på min hjemmeside og skal have lavet
så når man trykker på et link skal den gå til en bestemt side og med noget bestemt indhold.

Jeg har en index.asp fil hvor jeg har det bestemte indhold og når man trykker på et link i menuen bruger den
index.asp?menu=games så den viser "hovedsiden" og selve
games indhold i midten af siden (Som includefil så jeg altid har den samme menu osv. og kun ændre på indholdet)....

Nu vil jeg gerne i index.asp filen have lavet så jeg ved hjem af querystring viser noget på den side jeg smider i indholdet på hovedsiden... Altså noget ligende:

index.asp?menu=games&game=motorracer

Hvordan får jeg lige det lavet?

Håber i kan følge mig.. :-)
Avatar billede softspot Forsker
27. oktober 2005 - 12:44 #1
Må jeg have lov til at foreslå dig at benytte server.execute i stedet for #include, det er mere fleksibelt og det performer bedre (iflg. min ovebevisning)...

Så kan du lave dine sider nogenlunde således (og det er altså med den grov fil dette er lavet):


<!-- header og menuknald heroppe -->

<%
server.execute request.querystring("menu") & ".asp"
%>

<!-- footer og andet sjov hernede -->

Samme princip kan du benytte på undersiderne, dvs. gøre brug af request.querystring("game") på undersiden til enten at slå op i en database eller simpelthen lave en side til hvert spil (databaseudgaven er at forestrække, men det afhænger jo af dit ambitionsniveau).
Avatar billede busschou Praktikant
27. oktober 2005 - 13:02 #2
Jeg er til dels enig med softspot, meen du skal blot huske en ting så
Og det er at så vil et kald til noget som
index.asp?menu=hemmelig_fil_navn&game=noget
resultere i at du eksekverer filen "hemmelig_fil_navn.asp"
Med andre ord vil du risikere at ondsindede personer kan eksekvere kode du ikke regner med
Et problem kan være kaldet til
index.asp?menu=inde.asp...osv som så kalder sig selv igen og igen indtil serveren melder timeout
Derfor ville jeg tjekke menunavnene inden jeg kalder server.execute hvis jeg var dig, evt op imod en database
Avatar billede softspot Forsker
27. oktober 2005 - 13:09 #3
Som sagt, det var sammensat med den grove fil og der er, aht. klarheden i brugen af teknikken, altså ikke taget højde for alle disse eventualiteter. Naturligvis skal det ikke bare bruges råt... :)
Avatar billede Slettet bruger
27. oktober 2005 - 13:11 #4
hmmm... det er rigtigt.... men tror ikke det bliver det store problem da jeg blot gør følgende i min index.asp når man trykker på noget i menuen på siden:

menu = request.querystring("menu")
select case menu
  case "spil" %>
    <!--#include virtual="link til spil.asp fil"-->
      osv...

Men jeg vil så gerne når man kommer ind på games siden som jo også
er en include fil at man kan trykke på et bestemt spil
og den så laver en request på spilnavnet og bruger den til at vise
spillet med med følgende kode:
<param name="movie" value="/link til spil/<%response.write request.querystring("spil")%>.swf">

Det virker fint, men den viser det jo så i på den side som jeg har koden i
men ikke med min menu osv. da det jo er index.asp hvor alle sider bliver
vist som include midt på siden hvis i kan følge mig?
Jeg vil så gerne have at når jeg trykker på et spil link så viser den
index.asp med includefilen i midten hvor spillet så bliver vist i... :-)
Avatar billede busschou Praktikant
27. oktober 2005 - 13:27 #5
jeg vil stadig som softspot foreslå dig ikke at benytte include, idet SSI eksekveres før asp og derved risikerer du at alle filerne inkluderes uanset hvad du har i din case!
http://activedeveloper.dk/artikler/default.asp?articleid=50
Avatar billede softspot Forsker
27. oktober 2005 - 13:33 #6
Alt andet lige, så giver det nogle større sider som VBScript skal forholde sig til og det giver et større serverload fordi includes altid skal læses uanset om de bruges eller ej. Som jeg nævnte tidligere, så er server.execute bedre, dels fordi det kun er den nødvendige side skal loades, dels fordi de sider du loader med server.execute er selvstændige ASP-sider og kan derfor caches - hvilket betyder at de endda måske ikke skal loades fra disken når du kalder dem...
Avatar billede Slettet bruger
27. oktober 2005 - 13:57 #7
Okay, det vil jeg så lige prøve... Kan jo altid bruge lidt optimering.. ;-)

Jeg har fundet en løsning selv nu på problemet.. jeg kalder bare filerne direkte fra index.asp og undgår at en ny side skal loades men gør det somsagt direkte på index.asp filen så spillet bliver vist der... giver jo det samme resultat alligevel.. Jeg havde bare ikke tænkt det ordentligt igennem..
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