Avatar billede harryfink Praktikant
27. november 2002 - 13:58 Der er 5 kommentarer og
1 løsning

Response.redirect + HTTP_REFERER

Hej,

Jeg er igang med et password system. Det fungerer således:

1. Man bliver sendt hen til en side med indtastning af login+pw.
2. På denne side er en HTML-form, og endvidere lægges HTTP_REFERER i en session variabel - som vist her:

Session("referer") = Request.ServerVariables("HTTP_REFERER")

3. Siden som læser indholdet af formularen tjekker om passwordet er rigtigt eller forkert. Hvis forkert udskrives "Forkert password", og man skal sendes tilbage til siden man kom fra.

Hvis det er rigtigt, sættes en anden session variabel til "yes" for godkendt password, og man skal sendes videre til den URL, som Session("referer") indeholder - som vist her:

---
if ObjRS.eof = false then
    if objRS("salonpw")=salonpw then
        session("oksalonpw")="yes"
        response.redirect Session("referer")
    end if
   
else
    response.redirect Request.ServerVariables("HTTP_REFERER")
end if
---

Dette virker enormt logisk, synes jeg, men den giver denne fejl:

---
Response-objekt fejl 'ASP 0156 : 80004005'

Headerfejl

/signify/password_tjek.asp, linje 21

HTTP-headerne skrives allerede til klientbrowseren. Ændringer af HTTP-headers skal foretages, inden sideindholdet skrives.
---

Hvad går der galt??

På forhånd tak,
Mikkel :)
Avatar billede hnteknik Novice
27. november 2002 - 14:25 #1
øv - jeg har lige koden til dig derhjemme.
hvis ikke en anden hjælper - kommer jeg tilbage

prøv også server.execute("xxx.asp") - den er mere ren og kørere direkte på serveren.
Avatar billede harryfink Praktikant
27. november 2002 - 14:35 #2
server.execute - istedet for hvad??
Avatar billede thebigzzz Nybegynder
27. november 2002 - 16:40 #3
måske kan du bruge dette, det kører jeg på min side lige nu:

<%
    if request.form("logonUser")="" or request.form("LogonPass")="" then
        response.redirect("default.asp?reason=nologin")
    end if
    strUsername=replace(request.form("LogonUser"),"'","''")
    strPassword=replace(request("LogonPass"),"'","''")
   
    sql="select * from users where password='"&strPassword&"' and username='"&strUsername&"'"
    set rs=conn.execute(sql)
        if not rs.EOF then
            select case rs("options")
                case "1"
                    session("login")="true"
                    response.redirect("loginuser.asp")
                case "2"
                    session("moderatorlogin")="true"
                    response.redirect("loginmoderator.asp")
                case "3"
                    session("adminlogin")="true"
                    response.redirect("loginadmin.asp")
            end select
        else
            response.redirect("default.asp?reason=wronglogin")
        end if
%>
Avatar billede mccannon Nybegynder
27. november 2002 - 20:13 #4
headerfejl er som regel fordi der mangler response.buffer = true i toppen af den side man redirecter fra
Avatar billede harryfink Praktikant
28. november 2002 - 14:05 #5
Præcis... takker :)
Avatar billede hnteknik Novice
28. november 2002 - 18:37 #6
ØV reposne.buffer = true er lige svaret
Server.execute i stedet for response.redirect, da det foregår direkte på server og ikke kræver en roundtrip til klienten. Og så kan det gøres  med if...
Henrik
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