|
| Variable findes/login Fra : Klaus Egebjerg |
Dato : 10-04-02 20:33 |
|
Hej
jeg sidder og laver et login system, men kan ikke rigtig få det til at
virke. Som scriptet er nu så er alle adgangskoder rigtig. Det hele virkede
meget godt, før jeg fik indføjet det med Err. så kunne den finde ud af, om
adgangskode var rigtig, så det har nok et eller andet med det at gøre, men
hvad ? - Er der nogen der har et bud. Scriptet er således ud
klaus
OpenConn("opskrifter.mdb")
strMail = Trim(Request.Form("Mail"))
strQ = "SELECT Kundenr, Navn, Password FROM Kunder WHERE Mail='"& strMail
&"'"
on error resume next
Set rs = Conn.Execute (strQ)
If Err-Number <> 0 then
Response.Write "Der er fejl"
response.end
End If
If strPassword = rs("Password") Then
strKontrol = "ja"
else
strKontrol = "nej"
'End If
End If
Response.Write strKontrol
If strKontrol = "ja" Then
session.contents("kilde") = "retminadresse"
Else
%>
<script language="JavaScript">
alert ("Forkert mail eller adgangskode ")
</script>
<%
End If
Response.Write rs("Navn")
End Select
%>
| |
Jakob Andersen (10-04-2002)
| Kommentar Fra : Jakob Andersen |
Dato : 10-04-02 21:02 |
|
"Klaus Egebjerg" <klausegebjerg@get2net.dk> wrote in message
news:Wt0t8.26310$iY5.838932@news010.worldonline.dk...
> Som scriptet er nu så er alle adgangskoder rigtig. Det hele virkede
> meget godt, før jeg fik indføjet det med Err. så kunne den finde ud af, om
> adgangskode var rigtig, så det har nok et eller andet med det at gøre, men
> hvad ?
Fejlen er sådan set meget simpel den skylde at du har lavet en tastefejl i
nedenstående
> If Err-Number <> 0 then
Da du ikke "tvinger" dig selv til at deklarere variabler ved at bruge Option
Explicit tror VBScript at du bruger en variabel der hedder "Err-Number" og
den er jo tom dvs. Forskellig fra 0. Derfor stoppes udførslen.
Du skal istedet rette linien til:
If Err.Number <> 0 then
Generelt er det en god ide at bruge Option Explicit så undgår man denne
slags fejl.
Artikel:
<URL: http://www.4guysfromrolla.com/webtech/faq/Intermediate/faq6.shtml>
Dokumentation:
<URL:
http://msdn.microsoft.com/library/en-us/script56/html/vsstmoptionexplicit.as
p>
--
Jakob Andersen
| |
Klaus Egebjerg (10-04-2002)
| Kommentar Fra : Klaus Egebjerg |
Dato : 10-04-02 21:10 |
|
"Jakob Andersen" <jakob@effectus.dk> wrote in message
news:a925nk$2osq$1@news.cybercity.dk...
> "Klaus Egebjerg" <klausegebjerg@get2net.dk> wrote in message
> news:Wt0t8.26310$iY5.838932@news010.worldonline.dk...
> > Som scriptet er nu så er alle adgangskoder rigtig. Det hele virkede
> > meget godt, før jeg fik indføjet det med Err. så kunne den finde ud af,
om
> > adgangskode var rigtig, så det har nok et eller andet med det at gøre,
men
> > hvad ?
>
> Fejlen er sådan set meget simpel den skylde at du har lavet en tastefejl i
> nedenstående
>
> > If Err-Number <> 0 then
>
> Da du ikke "tvinger" dig selv til at deklarere variabler ved at bruge
Option
> Explicit tror VBScript at du bruger en variabel der hedder "Err-Number" og
> den er jo tom dvs. Forskellig fra 0. Derfor stoppes udførslen.
>
> Du skal istedet rette linien til:
>
> If Err.Number <> 0 then
>
> Generelt er det en god ide at bruge Option Explicit så undgår man denne
> slags fejl.
Det hjælper bare stadigvæk ikke. Den siger stadigvæk, at alle adgangskoder
er rigtig.
Klaus
| |
Jakob Andersen (10-04-2002)
| Kommentar Fra : Jakob Andersen |
Dato : 10-04-02 21:31 |
|
"Klaus Egebjerg" <klausegebjerg@get2net.dk> wrote in message
news:e01t8.26330$iY5.841542@news010.worldonline.dk...
> Det hjælper bare stadigvæk ikke. Den siger stadigvæk, at alle adgangskoder
> er rigtig.
Okay, jeg gik bare udfra at dette var fejlen da den lige "sprang i øjnene"
Jeg har lige et par spørgsmål så:
a. Hvor kommer strPassword fra?
b. Hvad laver den "End Select" der er i slutningen af dit script?
--
Jakob Andersen
| |
Klaus Egebjerg (10-04-2002)
| Kommentar Fra : Klaus Egebjerg |
Dato : 10-04-02 21:32 |
|
"Jakob Andersen" <jakob@effectus.dk> wrote in message
news:a927db$2rbc$1@news.cybercity.dk...
> "Klaus Egebjerg" <klausegebjerg@get2net.dk> wrote in message
> news:e01t8.26330$iY5.841542@news010.worldonline.dk...
> > Det hjælper bare stadigvæk ikke. Den siger stadigvæk, at alle
adgangskoder
> > er rigtig.
>
> Okay, jeg gik bare udfra at dette var fejlen da den lige "sprang i øjnene"
>
> Jeg har lige et par spørgsmål så:
>
> a. Hvor kommer strPassword fra?
> b. Hvad laver den "End Select" der er i slutningen af dit script?
>
> --
> Jakob Andersen
>
> Det var fordi den script stykke, kun var en del af et længere stykke (
jeg tod bare det stykke jeg troede var relavant. Der ser i sin helhed
således ud:
Klaus
<%
Sub Out(strOut)
Response.Write strOut
End Sub
%>
<br><br>
<form ACTION="<%= Request.ServerVariables ("SCRIPT_NAME") %>" METHOD="POST"
id="form1" name="form1">
<table>
<%
Out "<tr><td>Mail:<td> <input TYPE=TEXT Size=40 NAME=Mail></td>"
Out "<tr><td>Password<td><input Type=TEXT SiZE=40 NAME=Password></td>"
%>
</table>
<%
Out "<INPUT TYPE=SUBMIT NAME=""DO"" VALUE=""Hent kundedata"">"
Out "<INPUT TYPE=SUBMIT NAME=""DO"" VALUE=""Fortryd"">"
strMail = Trim(Request.Form("Mail"))
strPassword = Trim(Request.Form("Password"))
'StrFejl = 0
Dim Conn
function OpenConn (DBName)
Set Conn = Server.CreateObject("ADODB.Connection")
ODBCpath = left(request.ServerVariables("PATH_TRANSLATED"),
instrrev(request.ServerVariables("PATH_TRANSLATED"), "\"))
Conn.Open "DBQ=" & ODBCpath & DBName & ";DefaultDir=" & ODBCpath &
";Driver={Microsoft Access Driver (*.mdb)}"
End function
strMail = Trim(Request.Form("Mail"))
strPassword = Trim(Request.Form("Password"))
Select Case Trim(Request.Form("DO"))
Case "Fortryd"
Response.Redirect "menu.htm"
Response.End
Case "Hent kundedata"
OpenConn("opskrifter.mdb")
strMail = Trim(Request.Form("Mail"))
strQ = "SELECT Kundenr, Navn, Password FROM Kunder WHERE Mail='"& strMail
&"'"
on error resume next
Set rs = Conn.Execute (strQ)
If Err.Number <> 0 then
Response.Write "Der er fejl"
response.end
End If
If strPassword = rs("Password") Then
strKontrol = "ja"
else
strKontrol = "nej"
'End If
End If
Response.Write strKontrol
If strKontrol = "ja" Then
session.contents("kilde") = "retminadresse"
Else
%>
<script language="JavaScript">
alert ("Forkert mail eller adgangskode ")
</script>
<%
End If
Response.Write rs("Navn")
End Select
%>
| |
Jakob Andersen (10-04-2002)
| Kommentar Fra : Jakob Andersen |
Dato : 10-04-02 22:05 |
|
"Klaus Egebjerg" <klausegebjerg@get2net.dk> wrote in message
news:wl1t8.26339$iY5.843516@news010.worldonline.dk...
> Det var fordi den script stykke, kun var en del af et længere stykke (
> jeg tod bare det stykke jeg troede var relavant. Der ser i sin helhed
> således ud:
Jeg kan ikke umiddelbart se nogen fejl, men jeg vil anbefale dig at lave
scriptet sådan her (Så slipper du for On error resume next som er ret
ressource krævende):
------------------------------------------------
<br><br>
<form action="<%= Request.ServerVariables ("SCRIPT_NAME") %>" method="post">
<table>
<tr>
<td>Mail:</td>
<td><input type="text" size="40" name="Mail"></td>
</tr>
<tr>
<td>Password</td>
<td><input type="password" size="40" name="Password"></td>
</tr>
<tr>
<td><input type="submit" name="do" value="Hent kundedata"></td>
<td><input type="submit" name="do" value="Fortryd"></td>
</tr>
</table>
<%
' Funktioner -----------------------------------------------------
Function Fortryd()
Response.Redirect "menu.htm"
Response.End
End Function
Function HentKundedata( Email, Password )
OpenConn("opskrifter.mdb")
strMail = Trim(Replace(Mail, "'", "''"))
strPassword = Replace(strPassword , "'", "''")
'Passwordet er med i Queryen, så vi ikke behøver at tjekke det senere
strQuery = "SELECT Kundenr, Navn, Password FROM Kunder WHERE Mail='"&
strMail &"' AND Password = '" & strPassword & "'"
Set rs = Conn.Execute(strQuery)
'Hvis recordsettet er tomt er brugeren ikke godkendt
If rs.BOF Then
Response.Write( "<script type=""text/javascript"">alert(""Forkert
email eller Password"");</script>" )
Else
Response.Write( "Du er godkendt" )
Session("kilde") = "retminadresse"
Response.Write rs("Navn")
End if
End Funciton
Dim Conn
Function OpenConn (DBName)
Set Conn = Server.CreateObject("ADODB.Connection")
ODBCpath = left(request.ServerVariables("PATH_TRANSLATED"),
instrrev(request.ServerVariables("PATH_TRANSLATED"), "\"))
Conn.Open "DBQ=" & ODBCpath & DBName & ";DefaultDir=" & ODBCpath
&";Driver={Microsoft Access Driver (*.mdb)}"
End function
' Slut på funktioner -----------------------------------------------------
'Her tjekker vi hvor vi er:
If Request.Form( "do" ) = "Hent kundedata" Then
HentKundedata Request.Form( "Email" ), Request.Form( "Password" )
Elseif Request.Form( "do" ) = "Fortryd" Then
Fortryd
End if
%>
----------------------------------------------------------------------
| |
Steen Ulrick Madsen (11-04-2002)
| Kommentar Fra : Steen Ulrick Madsen |
Dato : 11-04-02 16:52 |
|
Hej Klau
Det var dog et kompliceret script, du har fået lavet.
Prøv at rettet nedenstående lidt til, det er noget enklere.
Mvh Steen
Svar1 = Request.Form("Pw")
Svar2 = Request.Form("User")
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open Session("MinDatabase")
Set Class2 = Server.CreateObject("ADODB.Recordset")
dim Sogestreng
Sogestreng = "where password ='" & Svar1 & "' and adgangskode ='" & Svar2 &
"'"
Set Class2 = Connect.Execute("SELECT * FROM adgangskoder " & (SogeStreng) &
" order by Id")
If Class2.EOF = true then
Class2.Close
set Class2=nothing
Response.Redirect "loginside.asp"
Else
%>
<p>Du har adgang!!! <br>
<%
End if
%>
| |
Jakob Andersen (11-04-2002)
| Kommentar Fra : Jakob Andersen |
Dato : 11-04-02 17:31 |
|
"Steen Ulrick Madsen" <sum@sumnet.dk> skrev i en meddelelse
news:a94bh0$2mmg$1@news.cybercity.dk...
> Prøv at rettet nedenstående lidt til, det er noget enklere.
Hvad tror du der sker i nedenstående hvis jeg logger ind med
' or '1' = '1
i både brugernavn og password?
> Connect.Open Session("MinDatabase")
Hvad laver du her?
> Set Class2 = Server.CreateObject("ADODB.Recordset")
Hvorfor laverdu et Recordset her for tre linier senere at intiansere et
andet oveni.
--
Jakob Andersen
| |
|
|