/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Siden redirecter lige meget hvad?!
Fra : David Trasbo


Dato : 04-06-05 09:15

Jeg har en side med følgende kode:

(Den er ikke specielt lang, så jeg tænker at det går.)

**
<% Response.Buffer=True %>
<%
strTekst = Request.Cookies("User")("tekst")
%>
<% If strTekst = Request.Querystring("name") then%>
<%
If Session("blnIsUserGood") = False or IsNull(Session("blnIsUserGood")) =
True then
Response.Redirect"fejl.asp?id=2"
End If
%>
<%
Response.ExpiresAbsolute = #1980-01-01#
Response.AddHeader "pragma", "no-cache"
Response.AddHeader "cache-control", "no-cache"
Response.AddHeader "cache-control", "no-store"
Response.CacheControl = "Private"
%>
<% Dim strTitle
strTitle="Din profil" %>

<!--#include virtual="/incs/log-oppe.inc"-->

<p class="fed"><% Response.Write "Hej " & Request.Querystring("name") %></p>

<!--#include virtual="/incs/nede.inc"-->
<% Else Response.Redirect"fejl.asp?id=4" End if %>
<% end if %>
**

Det er i forbindelse med et login system. Hver gang jeg logger ind, (selvom
kodeordet er korrekt) redirecter siden til fejl.asp?id=4, som den nederste
linje henviser til. Hvad er der galt?

--
David Trasbo.
Vær en god Usenet bruger. Læs http://usenet.dk/netikette.



 
 
Jens B (04-06-2005)
Kommentar
Fra : Jens B


Dato : 04-06-05 10:30


"David Trasbo" <datra@mail.dk> skrev i en meddelelse
news:42a162f6$0$18650$14726298@news.sunsite.dk...
> Det er i forbindelse med et login system. Hver gang jeg logger ind,
> (selvom
> kodeordet er korrekt) redirecter siden til fejl.asp?id=4, som den nederste
> linje henviser til. Hvad er der galt?

Så vidt jeg kan se har du en End If for meget til sidst.
Hvorfor bruger du så mange <% %> hele tiden? Jeg har lige prøve at rode
lidt op i koden, så den bliver lidt mere overskuelig, og så fjernet den
sidste End If. Prøv om det virker.

<%
Response.Buffer=True
strTekst = Request.Cookies("User")("tekst")
If strTekst = Request.Querystring("name") then
If Session("blnIsUserGood") = False or IsNull(Session("blnIsUserGood")) =
True then
Response.Redirect"fejl.asp?id=2"
End If
Response.ExpiresAbsolute = #1980-01-01#
Response.AddHeader "pragma", "no-cache"
Response.AddHeader "cache-control", "no-cache"
Response.AddHeader "cache-control", "no-store"
Response.CacheControl = "Private"
Dim strTitle
strTitle="Din profil"
%>
<!--#include virtual="/incs/log-oppe.inc"-->
<p class="fed"><% Response.Write "Hej " & Request.Querystring("name") %></p>
<!--#include virtual="/incs/nede.inc"-->
<%
Else
Response.Redirect"fejl.asp?id=4"
End if
%>

Jens



Jens B (04-06-2005)
Kommentar
Fra : Jens B


Dato : 04-06-05 10:45


"Jens B" <ingen.spam@til.mig> skrev i en meddelelse
news:42a174b0$0$63656$edfadb0f@dread15.news.tele.dk...
> Så vidt jeg kan se har du en End If for meget til sidst.
> Hvorfor bruger du så mange <% %> hele tiden? Jeg har lige prøve at rode
> lidt op i koden,

hmm...ok, jeg mente selvfølgelig ikke "rode op" i koden, det var jo nærmere
det modsatte der var ønsket

Jens



David Trasbo (04-06-2005)
Kommentar
Fra : David Trasbo


Dato : 04-06-05 11:04


> <%
> Response.Buffer=True
> strTekst = Request.Cookies("User")("tekst")
> If strTekst = Request.Querystring("name") then
HER ER FEJLEN:> If Session("blnIsUserGood") = False or
IsNull(Session("blnIsUserGood")) =
> True then
> Response.Redirect"fejl.asp?id=2"
> End If
> Response.ExpiresAbsolute = #1980-01-01#
> Response.AddHeader "pragma", "no-cache"
> Response.AddHeader "cache-control", "no-cache"
> Response.AddHeader "cache-control", "no-store"
> Response.CacheControl = "Private"
> Dim strTitle
> strTitle="Din profil"
> %>
> <!--#include virtual="/incs/log-oppe.inc"-->
> <p class="fed"><% Response.Write "Hej " & Request.Querystring("name")
%></p>
> <!--#include virtual="/incs/nede.inc"-->
> <%
> Else
> Response.Redirect"fejl.asp?id=4"
> End if
> %>

Nu får jeg fejlen: Fejltype:
Der opstod en Microsoft VBScript-kompileringsfejl (0x800A03EA)
Der er en syntaksfejl
/login/index.asp, line 5, column 73
If Session("blnIsUserGood") = False or IsNull(Session("blnIsUserGood")) =
------------------------------------------------------------------------^

--
David Trasbo.
Vær en god Usenet bruger. Læs http://usenet.dk/netikette.




Tomasz Otap (04-06-2005)
Kommentar
Fra : Tomasz Otap


Dato : 04-06-05 11:11

David Trasbo proclaimed as follows:
>><%
>>Response.Buffer=True
>>strTekst = Request.Cookies("User")("tekst")
>>If strTekst = Request.Querystring("name") then
>
> HER ER FEJLEN:> If Session("blnIsUserGood") = False or
> IsNull(Session("blnIsUserGood")) =
>
>>True then

[snip]

>
> Nu får jeg fejlen: Fejltype:
> Der opstod en Microsoft VBScript-kompileringsfejl (0x800A03EA)
> Der er en syntaksfejl
> /login/index.asp, line 5, column 73
> If Session("blnIsUserGood") = False or IsNull(Session("blnIsUserGood")) =
> ------------------------------------------------------------------------^
>

Der er linieskift efter IsNull(Session("blnIsUserGood")) =

Det skal det ikke være. Linien skal fortsætte indtil ordren er afsluttet:

.... IsNull(Session("blnIsUserGood")) = True then

Har du ikke haft samme type problem før? Husk at tilpasse koden, når du
kopierer den ind fra nyhedsgruppe-breve. Postklienter plejer gerne at
wrappe teksten ved 72 tegn med linieskift, der ofte bliver indsat midt i
de lange kodelinier. De skal fjernes.

t

David Trasbo (04-06-2005)
Kommentar
Fra : David Trasbo


Dato : 04-06-05 12:45

> ... IsNull(Session("blnIsUserGood")) = True then

Samme problem. Jeg satte det gamle end if ind igen og nu får jeg ikke
fejlmeddelelse men siden redirecter uden at betingelser er opfyldt. Uden End
if, får jeg fejlen 'end' var ventet.

--
David Trasbo
Vær en god Usenet bruger. Læs http://usenet.dk/netikette.



terje (04-06-2005)
Kommentar
Fra : terje


Dato : 04-06-05 11:47

David Trasbo wrote:
>><%
>>Response.Buffer=True
>>strTekst = Request.Cookies("User")("tekst")
>>If strTekst = Request.Querystring("name") then
>
> HER ER FEJLEN:> If Session("blnIsUserGood") = False or
> IsNull(Session("blnIsUserGood")) =
>
>>True then
>> Response.Redirect"fejl.asp?id=2"
>> End If

Når du har fixet feilen med linjeskift, så bør du se nærmere på logikken
du benytter:

Response.Write Session("Foo") = False Or IsNull(Session("Foo")) = True

Hvis Session("Foo") er tom, altså at denne variabelen ikke har vært
initialisert (og det vil den jo ikke være når jeg besøker denne siden
for første gang, eller jeg ikke har aktivert støtte for cookies i min
nettleser), så vil Session("Foo") alltid være _false_. Når vbscript skal
lage en boolean av en verdi som er tom, så blir resultatet _false_.
Dermed vil jeg alltid bli sendt til fejl.asp.

Jeg ville forenklet og kun testet for True:

If Session("Foo") = True Then
' Logged in
Else
Response.Redirect "fejl.asp"
End If

I siden fejl.asp ville jeg ha minnet brukeren på at støtte for cookies
må aktiveres for å kunne bruke sidene osv.

terje

David Trasbo (07-06-2005)
Kommentar
Fra : David Trasbo


Dato : 07-06-05 12:17

Nu ser min kode sådan her ud:

**KODE**

<% Response.Buffer=True %>
<%
strTekst = Request.Cookies("User")("tekst")
%>
<% If strTekst = Request.Querystring("name") then%>
<%
If Session("blnIsUserGood") = False or IsNull(Session("blnIsUserGood")) =
True then
Response.Redirect"fejl.asp?id=2"
End If
%>
<%
Response.ExpiresAbsolute = #1980-01-01#
Response.AddHeader "pragma", "no-cache"
Response.AddHeader "cache-control", "no-cache"
Response.AddHeader "cache-control", "no-store"
Response.CacheControl = "Private"
%>
<%
Dim strTitle
strTitle="Din profil"
%>
<!--#include virtual="/incs/log-oppe.inc"-->
<% If Request.Querystring("name") = "" Then
Response.Redirect "fejl.asp?id=3"
End If

%>
<p class="fed"><% Response.Write "Hej " & Request.Querystring("name") %></p>
<!--#include virtual="/incs/nede.inc"-->
<% Else Response.Redirect"fejl.asp?id=4"
End if %>
<% end if %>

**KODE**

Når jeg klikker ind på siden, får jeg en fejl ligemeget hvad fra
fejl.asp?id=4. Dvs. at den sidste linje i koden redirecter hvis
betingelserne er opfyldt. Fejl.asp?id=4 siger følgende: "Du er logget ind
med et andet brugernavn, end det du prøver at få adgang til."

Betingelserne er, at hvis det brugernavn der står i Querystringen er det
samme som blev gemt i en cookie når man logger ind så indlæser den resten af
siden. Hvis Querystringen IKKE er det samme som blev gemt i cookien da man
loggede ind burde den redirecte til fejl.asp?id=4. Der er garanteret nogle
kloge hoveder der kan se fejlen.

--
David Trasbo.
Vær en god Usenet bruger. Læs <http://usenet.dk/netikette>.



Jens Gyldenkærne Cla~ (07-06-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 07-06-05 12:40

David Trasbo skrev:

> <% If strTekst = Request.Querystring("name") then%>

[snip]

> <% Else Response.Redirect"fejl.asp?id=4"
> End if %>

Det er sammenligningen øverst der fejler, hvis du hele tiden havner på
fejl.asp?id=4 (forudsat at der ikke gemmer sig uafsluttede if-sætninger
i dine includefiler).

Har du tjekket hvad du har i hhv. strTekst og
Request.Querystring("name") når du ryger ned i den omtalte else? Prøv at
udskrive dem således:

<% Else
Response.write "strTekst (" & strTekst & ") <> name (" & name & ")"
Response.End

Response.redirect "fejl.asp?id=4"
End If %>


> Når jeg klikker ind på siden, får jeg en fejl ligemeget hvad fra
> fejl.asp?id=4. Dvs. at den sidste linje i koden redirecter hvis
> betingelserne er opfyldt.

Hvad sker der første gang man prøver at logge ind? Så er strTekst
formentlig tom (da cookien endnu ikke er oprettet), mens
Request.Querystring("name") måske altid indeholder en værdi?

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

David Trasbo (07-06-2005)
Kommentar
Fra : David Trasbo


Dato : 07-06-05 13:24

> Hvad sker der første gang man prøver at logge ind? Så er strTekst
> formentlig tom (da cookien endnu ikke er oprettet), mens
> Request.Querystring("name") måske altid indeholder en værdi?

Der kommer en side før den som tjekker indtastet brugernavn og kodeord OG
gemmer cookien.

--
David Trasbo.
Vær en god Usenet bruger. Læs <http://usenet.dk/netikette>.



David Trasbo (07-06-2005)
Kommentar
Fra : David Trasbo


Dato : 07-06-05 13:27

>Prøv at
> udskrive dem således:
>
> <% Else
> Response.write "strTekst (" & strTekst & ") <> name (" & name & ")"
> Response.End
>
> Response.redirect "fejl.asp?id=4"
> End If %>

Vil du sætte det ind i det store hele? Jeg er ikke så god til at overskue
sådan noget.


Forresten: Der gemmer sig en enkelt if-sætning i den føste include. Det er
den der afsluttes med end if i slutningen af dokumentet.
--
David Trasbo.
Vær en god Usenet bruger. Læs http://usenet.dk/netikette.



Jens Gyldenkærne Cla~ (07-06-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 07-06-05 13:51

David Trasbo skrev:

> Vil du sætte det ind i det store hele? Jeg er ikke så god til at overskue
> sådan noget.

Jeg ville sætte det ind der hvor du har den sidste else-del. Men du kan
også gøre det i starten - før sammenligningen.

> Forresten: Der gemmer sig en enkelt if-sætning i den føste include. Det er
> den der afsluttes med end if i slutningen af dokumentet.

Det lyder som en dårlig ide. Jeg vil foreslå dig at have balanceret dine
if-sætninger (og generelt alle blok-strukturer) således at if-sætninger
der indledes i en bestemt fil også afsluttes i samme fil.

Det er ikke ulovligt at gøre som du gør, men det kan blive meget svært
at holde styr på koden.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

David Trasbo (07-06-2005)
Kommentar
Fra : David Trasbo


Dato : 07-06-05 13:59


> > Vil du sætte det ind i det store hele? Jeg er ikke så god til at
overskue
> > sådan noget.
>
> Jeg ville sætte det ind der hvor du har den sidste else-del. Men du kan
> også gøre det i starten - før sammenligningen.

Jeg mente, om du ville sætte det ind i stedet for noget andet i den kode jeg
postede her i gruppen?

--
David Trasbo.
Vær en god Usenet bruger. Læs http://usenet.dk/netikette.



Jens Gyldenkærne Cla~ (07-06-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 07-06-05 14:21

David Trasbo skrev:

> Jeg mente, om du ville sætte det ind i stedet for noget andet i den kode jeg
> postede her i gruppen?

Ja. Find den del af din kode der udgør den sidste else-sætning
(startende med <% else og sluttende med end if %>). Mit forslag skal ind
i stedet for denne blok.

Hvis du ser mit forrige svar - hvor kodeblokken er angivet - svarer det
i øvrigt præcist til den kodestump der er citeret umiddelbart før.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

David Trasbo (07-06-2005)
Kommentar
Fra : David Trasbo


Dato : 07-06-05 15:09

> Har du tjekket hvad du har i hhv. strTekst og
> Request.Querystring("name") når du ryger ned i den omtalte else? Prøv at
> udskrive dem således:
>
> <% Else
> Response.write "strTekst (" & strTekst & ") <> name (" & name & ")"
> Response.End
>
> Response.redirect "fejl.asp?id=4"
> End If %>

Okay. Jeg erstattede lige & name & med & Request.Querystring("name"). Så
står der følgende på skærmen:

**GENGIVELSE**

strTekst (Datra) <> name (Datra)

**GENGIVELSE**

Men siden redirecter ikke??

--
David Trasbo.
Vær en god Usenet bruger. Læs http://usenet.dk/netikette.



Jens Gyldenkærne Cla~ (07-06-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 07-06-05 15:28

David Trasbo skrev:

> Okay. Jeg erstattede lige & name & med & Request.Querystring("name"). Så
> står der følgende på skærmen:
>
> **GENGIVELSE**
>
> strTekst (Datra) <> name (Datra)

- det ser jo ud til at de to er ens. Men du skrev også noget om at du
havde en if-sætning skjult i dine includefiler.

Start med at få styr på hvor hver if-sætning starter og slutter. Brug
response.write til at tjekke dine antagelser, og brug kommentarer til at
markere sammenhængen når du har tjekket den - fx som her:

IF x = 5 Then
....
If y = 14 Then

End If ' y=14

Else ' x <> 5
....
End If ' x = 5


> Men siden redirecter ikke??

Det er på grund af response.End. Hvis der redirectes, kan du ikke se
nogen af reponse-sætningerne. Du fjerner blot response.end når du har
fået siden til at makke ret.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

David Trasbo (08-06-2005)
Kommentar
Fra : David Trasbo


Dato : 08-06-05 09:30

Nu virker det. Jeg fjernede if-sætningen i inc-filen. Det virker stadig uden
problemer. Tak for hjælpen.

--
David Trasbo.
Vær en god Usenet bruger. Læs <http://usenet.dk/netikette>.



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste