Avatar billede jytte Nybegynder
17. juni 2003 - 13:44 Der er 8 kommentarer og
2 løsninger

hvor kigger request("navn") efter navn ?

Når man får værdier fra en postet side bruger man

request.form("navn")

og når man får værdier som parametre i url´en bruger man

request.querystring("navn")

En hurtig skrivemåde der kan finde navn begge steder er

request("navn")

Men hvad nu hvis navn forekommer begge steder ? hvilken af værdier er det så man aflæser ?

Og jeg har endda oplevet at

request("os") gav værdie Windows NT selvom jeg ikke havde nogen variabel af dette navn med over !

For mig ser det altså ud til at request("navn") kigger flere steder end blot i form og querystring.

Så hvordan kan man egentlig vide hvorfra ens variabel bliver aflæst ?

(Jeg har nemlig hidtil ikke vist at request("navn") kunne aflæses flere steder fra end fra form og querystring -- og jeg har derfor i min programmering udnyttet at jeg troede at når jeg ikke havde givet "navn" værdi disse steder så var "navn" tom)
Avatar billede martinhh Nybegynder
17. juni 2003 - 14:04 #1
Request("blabla") kiggeri alle objekter under Request. Det kan f.eks. være Request.Cookie , Request.Session osv osv

Så derfor kan du godt få andre værdier...

Mvh,
Martin
Avatar billede martinhh Nybegynder
17. juni 2003 - 14:06 #2
Den løber altså alle objekter under Request igennem, og ser om der er en variabel der har navnet "navn". Når du skriver "os", så viser den den her variabel:

Request.ServerVariables("OS")
Avatar billede jytte Nybegynder
17. juni 2003 - 14:14 #3
Kan jeg vide
1) hvilken værdi jeg får hvis der er navnesammenfald i objektnavnene under Request ?
2) har jeg nogen mulighed for at vide om et bestemt objektnavn er "brugt" dvs indeholder en værdi ?
Avatar billede soes Nybegynder
17. juni 2003 - 15:01 #4
du kan godt hente alle vaerdierne ud med dette stykke kode

For Each Item In Request.[Form|QueryString|Cookies|ServerVariables]
  Response.Write(Item & " Value: " & Request.[Form|QueryString|Cookies|ServerVariables](Item))
Next

Dette kode skal saa gentages igen og igen indtil at du er igennem alle mulighederne i Request objectet (Form, QueryString, osv)

Det bedste er at naar man skriver sin kode at man angiver praecies hvor du vil hente sin data fra om det er fra en querystring, form ol. herved undgaar man det som du har oplevet. Det bedste vil derfor vaere hvis du valgte at aendre din maade at skrive paa for at tjekke paa alle mulighederne er baade resource kraevende og kan give noget meget grimt kode.
Avatar billede jytte Nybegynder
17. juni 2003 - 15:34 #5
Et sidste opklarende spørgsmål

Når jeg selv har lavet hele siten kender jeg så alle objektnavne ?

eller kan fx. cookies indholde cookies sat af andre sites på serveren ?
Avatar billede soes Nybegynder
17. juni 2003 - 17:00 #6
nej, cookies hoere til hvert deres domain. Dvs. at hvis jubii.dk skriver en cookie saa kan tv2.dk ikke laese cookien fra jubii.dk
Avatar billede jytte Nybegynder
17. juni 2003 - 19:33 #7
>soes
I mit tilfælde har vi flere sites under samme domæne.

Så hvis disse sites deler cookievariabler har jeg måske forklaringen på nogen underligheder jeg har oplevet...
Avatar billede jytte Nybegynder
17. juni 2003 - 19:59 #8
>soes: hvis du laver et svar får du nogen af pointene

Det eneste jeg ikke har fået opklaret er nu
1) hvilken værdi jeg får hvis der er navnesammenfald i objektnavnene under Request ?
-- altså : hvis jeg f.eks har fire variabler (en i form,en i querystring,en i cookie og en i servervariables) som alle hedder os og som alle har forskellige værdier; hvilken værdi får request("os") så ?
Avatar billede soes Nybegynder
17. juni 2003 - 22:22 #9
du kan evt. proeve dette eksperiment.

<input type="text" name="os" value="Fra form"><input type="submit">
<%
Response.Cookies("os") = "Fra cookie"

Response.write("<hr>")
Response.Write(Request("os"))
%>

kraever lige at du submitter siden foerst :)
Avatar billede jytte Nybegynder
25. juni 2003 - 18:28 #10
Undskyld ventetiden -- jeg deler pointsene mellem jer

Jeg fandt en bog hvor der stod at der er en forudbestemt rækkefølge hvori request aflæses, men de ville ikke skrive hvilken rækkefølge da de ikke ville opfordre til at man lavede kode hvor man risikerede fejl der ville tage ugers debugging at finde. -- så jeg må hellere programmere lidt kønnere for fremtiden :-)
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