Avatar billede nidyahou Praktikant
06. april 2006 - 16:16 Der er 7 kommentarer og
1 løsning

fejl i login

hvad er problemet med følgende kode når jeg skal logge ind:

loginform:
<% if Session.Contents("user") <> "" then
Response.Redirect "Login.asp"
else%>
<form action="Login.asp" method="post">
                        Bruger:<br>
                        <input type="text" name="user" class="textfield">
                        <br>
                        Kodeord:<br>
                        <input type="password" name="password" class="textfield">
                        <br>
                        <input type="submit" value="log ind" class="textfield">
</form>
<%end if%>


loginscript:
<%
if Request.Form("action") = "logout" then
Session.Abandon()
Response.Redirect "Loginform.asp"
end if
if Not Session.Contents("user") <> "" then
    ' secure login information
strUsr = Server.HTMLEncode(Replace(Request.Form("user"),"'","''"))
strPsw = Server.HTMLEncode(Replace(Request.Form("password"),"'","''"))

    'login procedure
strSQL = "Select * from `Users` where LCase(`Nickname`) = '" & Lcase(strUsr) & "' AND Lcase(`Password`) ='" & Lcase(strPsw) & "'"
%>
<!--#include file="../../Database/Connect.asp"-->
<%
    'check if username and password matches
if rs.EOF or rs.BOF then
Response.Redirect "Loginform.asp"
else
strSQL2 = "Select * from `Users` where LCase(`Nickname`) = '" & LCase(strUsr) & "'"
set rs2 = Conn.Execute(strSQL2)

StrNick = rs2("Nickname")
    'fill in information in the sessions that will follow the user around the page
session.Contents("user") = strNick
response.redirect "Login.asp"


Mit problem er, at uanset hvad returnerer den login'et som forkert, OG REDIRECTER TIL LOGINFORM.ASÅ HVOR MAN SÅ KAN PRØVE IGEN OG SÅ KØRER DET HELE I RING UDEN AT MAN KAN LOGGE IND - HVORFOR?

dont mind CaPs LoCk :P sry
Avatar billede eagleeye Praktikant
06. april 2006 - 22:41 #1
Hvad skrer der i filen  Connect.asp?

Der ud iver så ser det lidt underligt ud du redirecter til login.asp når man er logget ind, og så igen ved login formen er der redirect til login.asp hvis der er et brugernavn og form'en sender også til login.asp, skal det være sådan?

Kan du uddybe hvad fil navne er og hvad kode der i?
Avatar billede nidyahou Praktikant
07. april 2006 - 16:27 #2
loginform.asp indeholder det jeg har skrevet som "loginform" og login.asp indeholder det jeg har skrevet som "loginscript" der er ikke noget galt med connect, connect opretter bare min MySQL database forbindelse - jeg kan sagtens se nyheder og sådan med connect.asp

Mine redirect's ghår ud på, at loginform vises i en iframe, derfor hvis man er logget ind og man refresher (sessionen er jo ikke død endnu) bliver man bare redirectet til sin "login" side, istedet for at man tror man skal logge ind igen.
Avatar billede eagleeye Praktikant
08. april 2006 - 11:00 #3
Jeg spurgte til connect.asp fordi koden lige efter ikke ser ud til at åbne for recordseet:

%>
<!--#include file="../../Database/Connect.asp"-->
<%
    'check if username and password matches
if rs.EOF or rs.BOF then


Umiddelbart mangler der denne linie lige før if sætningen:

Set rs = Conn.Execute(strSQL)
Avatar billede nidyahou Praktikant
08. april 2006 - 11:30 #4
connect ser sådan her ud:
strDSN = "DRIVER={MySQl ODBC 3.51 Driver};SERVER=www.freesql.org;DATABASE=xxxx;USER=xxxx;PASSWORD=xxxx;Option=131072"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open strDSN
set rs = conn.execute(strSQL)
Avatar billede eagleeye Praktikant
08. april 2006 - 11:46 #5
ok, hvad sker der så på login.asp når man er logget ind?

Har du prøvet et udskrive:  session.Contents("user")
Og tjekke om den får det rigtige selvom den kommer ind på login formen..



Umiddelbart kan disse linier:


if rs.EOF or rs.BOF then
Response.Redirect "Loginform.asp"
else
strSQL2 = "Select * from `Users` where LCase(`Nickname`) = '" & LCase(strUsr) & "'"
set rs2 = Conn.Execute(strSQL2)

StrNick = rs2("Nickname")
    'fill in information in the sessions that will follow the user around the page
session.Contents("user") = strNick
response.redirect "Login.asp"



rettes til dette da rs også indeholder Nickname:

if rs.EOF or rs.BOF then
Response.Redirect "Loginform.asp"
else
StrNick = rs("Nickname")
    'fill in information in the sessions that will follow the user around the page
session.Contents("user") = strNick
response.redirect "Login.asp"
Avatar billede nidyahou Praktikant
09. april 2006 - 12:37 #6
en dybt mærkelig observation:

Scriptet fungerer hvis man kører det i sin egen side (altså åbner loginform sidne i en helside og skriver derfra), men hvis det er i en iframe - som det er, så fungerer det ikke.
Avatar billede nidyahou Praktikant
09. april 2006 - 12:38 #7
sessionen bliver først defineret efter redirectet.
Avatar billede nidyahou Praktikant
22. april 2006 - 20:50 #8
jeg kunne åbentbart kun køre den hvis den IKKE var i en iframe :S ? tak for interessen
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