webForumDet fria alternativet

Konstig bugg

ASP

2 svar · 214 visningar · startad av kalasnikov

Medlem sedan mars 20046 inlägg
Frågan#1

Tja, jag har en såndär "glömt lösenord"grej som buggar lite. Om man skriver in en mail som finns i databasen så är det inga problem, man får mailet skickat till sig men om man skriver en mail som inte finns i databasen så kommer man ändå till sidan där det står att man har fått mail.

<html>

<!-- #include virtual="projekt/adovbs.inc" -->
<!-- #include virtual="projekt/cdovbs.inc" -->
<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:/inetpub/wwwroot/projekt/databas.mdb"
Set RecSet = Server.CreateObject("ADODB.Recordset")

Visa = "Select \* From Användare WHERE epost=  '" & Request.Form("epost") & "'"
RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic

If Not RecSet.EOF Then
If Lcase(Request.Form("epost")) = Lcase(RecSet("epost")) Then
set msg = Server.CreateOBject( "JMail.Message" )
msg.Logging = true
msg.silent = true
msg.From = "hej@hej.se"
msg.FromName = "Administratörerna på 2004projekt.tk"
msg.AddRecipient Request.Form("epost")
msg.Subject = "Glömt lösenord"
msg.Body = "Lösenord: " & RecSet("pass1")
If not msg.Send("smtp.bredband.net" ) then
Response.write "<pre>" & msg.log & "</pre>"

Response.write "Du har nu fått ett mail med ditt lösenord"
End If

Else
Response.write "Din mail finns inte i databasen."
End If

End If

RecSet.Close
Connect.Close

%>
<h2>Du har nu fått ett mail med ditt lösenord</h2>
</html>
är tacksam för alla svar

Medlem sedan feb. 200112 078 inlägg
#2

Ja? Sidan stoppas ju inte bara för att "Din mail finns inte..." skrivs ut. Du har ju bara IF-satsen runt själva skickningen av mailet.

<html>

<!-- #include virtual="projekt/adovbs.inc" -->
<!-- #include virtual="projekt/cdovbs.inc" -->
<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:/inetpub/wwwroot/projekt/databas.mdb"
Set RecSet = Server.CreateObject("ADODB.Recordset")

Visa = "Select * From Användare WHERE epost= '" & Request.Form("epost") & "'"
RecSet.Open Visa, Connect, adOpenStatic, adLockOptimistic

If Not RecSet.EOF Then
If Lcase(Request.Form("epost")) = Lcase(RecSet("epost")) Then
set msg = Server.CreateOBject( "JMail.Message" )
msg.Logging = true
msg.silent = true
msg.From = "hej@hej.se"
msg.FromName = "Administratörerna på 2004projekt.tk"
msg.AddRecipient Request.Form("epost")
msg.Subject = "Glömt lösenord"
msg.Body = "Lösenord: " & RecSet("pass1")
If not msg.Send("smtp.bredband.net" ) then
Response.write "<pre>" & msg.log & "</pre>"

sMsg = "Du har nu fått ett mail med ditt lösenord"
End If

Else
sMsg = "Din mail finns inte i databasen."
End If

End If

RecSet.Close
Connect.Close
%>
<h2><% =sMsg %></h2>
</html>

PS. Använd [kod]-taggarna. DS.

Medlem sedan feb. 200112 078 inlägg
#3

Jag skulle även en gång för alla vilja påpeka att det anses som dålig programmerar-etik att döpa strängar till t.ex. 'Visa' som detta uppenbara IDG WebStudio-exemplet illustrerar. Döp dina variablar till vettiga namn istället;

sSQL = "SELECT * FROM Baluba"
251 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)