webForumDet fria alternativet

Hur kan man skicka ett glömt password?

ASP

10 svar · 152 visningar · startad av jimpa

Medlem sedan jan. 2001361 inlägg
Frågan#1

Hej,

Har gjort ett script där användaren kan
logga in på sidan med genom att fylla i sin email address o ett valfritt password.

Email addressen o det valfria Passwordet
lagras då i databasen.

Men om jag vill att användaren ska kunna få sitt password mailat till sig, om t.ex. han/hon har glömt bort vad dom en gång i tiden valde för password, hur göt man då??

/M.v.h. Jimpa

Medlem sedan maj 20011 343 inlägg
#2

Först och främst måste du ha en mailkomponent installerad på servern som du kör sidan på.

Sen får du skapa en sida som hämtar värdena från din databas där mail adressen i databasen är samma som den man anger i ett formulär.

när den är hämtad så får du göra en kod snutt som skickar iväg mailet och hur denna kod snutt ska se ut är helt beroende på vilken mail komponent du använder.

*hoppas du förstår vad jag menar*
*är medveten om att jag har förklarat dåligt*

------------------
verktygslådan

Ett gott trams förlänger
livet :e

Medlem sedan jan. 2001361 inlägg
#3

Mmm,

Jag fattar hur du menar och min mailkomponent ska vara CDONTS men hur själva koden ska se ut för hela scriptet ska fungera vet jag inte.
'Nybörjare'

Tacksam för ett script ex.

/M.v.h. Jimpa

Medlem sedan dec. 19996 522 inlägg
#4

Detta har disskuterats för, i alla fall jmail osv. Du får väll helt enkelt göra så att om användaren trycker på en knapp, tar du ut hans mail från databasen samt lösenord. sen Koller i alla inlägg om jmail (tror det finns om just detta faktiskt) hur du ska programmera att han skickar till den mailen han har..

Prova så hjälps vi åt.. ;) själv lite intresserad av att göra en sådan här.. **he he**

------------------
1 Man, 1 Million dead, The odds are just about even - Ash

Medlem sedan feb. 20013 023 inlägg
#5

Vill tipsa om http://www.asp101.com som har mailscript och dessutom bra förklarat

Medlem sedan juli 20003 825 inlägg
#6

SQL = "SELECT * FROM [users] WHERE [x_email] = '" & request("x_email") & "';"
set mySQL = Conn.Execute(SQL)

IF mySQL.EOF
--> ' den uppgivna adressen finns inte i databasen
ELSE
--> ' skicka brevet, du vet ID, namn, epost osv.
END IF

------------------
Never underestimate your opponents.

Medlem sedan sep. 2000314 inlägg
#7

Jag hittade följande kod på nätet. Tyvärr får jag inte själva lösenordet i mailet utan endast texten: "*** THIS MESSAGE HAS BEEN AUTOMATICALLY GENERATED ***" Någonstans går det snett. Men det skall vara på rätt väg.
Tabellen heter users
Fälten heter email, users och pass.
Kanske ngn kan se här vad som saknas.

<%@Language=VBScript%>
<%Response.Buffer=True%>

<html>
<body>

<%
'grab the value entered in the form, if no value was entered then show the form
email = Trim(Request.Form("email"))
If Len(email) < 1 Then
%>

<center><font color="blue">Forget your password?</font><p>
<table>
<form method="post">
<tr><td><center>Please Enter Your <b>Email Address</b></center></td></tr>
<tr><td><center><input type="text" name="email"></center></td></tr>
<tr><td><center><input type="submit" value="Submit"></center></td></tr>
</table>
</form>
</center>

<%
'otherwise, query the database and grab the password associated with the value entered in the form
Else
	Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=D:\InetPub\wwwroot\users.mdb"
		
		'<!--#include file="connect.asp"-->
		'Set Conn = Server.CreateObject("ADODB.Connection")
		'Conn.Open "Driver={SQL Server};Server=127.0.0.1;Database=plat;Uid=plat;Pwd=plat;"

sql = "SELECT email, pass FROM users WHERE email = '"&email&"'"
Set RS = Conn.Execute(sql)

'if the value does not match any record in the database then tell the user
If RS.EOF Then
Response.write "<p><br><br><br><center>Invalid Email Address!</center>"
'otherwise, a match is found
Else
'grab the password from the database
password = RS("pass")
'call the SendPW subroutine passing the email address and the password as arguments
Call SendPW(email, pass)
Response.Write "<p><br><br><br><center>Your Password has been sent!</center>"

RS.Close
Conn.Close
Set RS = Nothing
Set Conn = Nothing
End If
End If

'here is the subroutine that actually sends the email using CDONTS.
Sub SendPW(email, pass)
Set cdoMail = Server.CreateObject("CDONTS.NewMail")
cdoMail.From = "EMAIL@DOMÄN.COM"
cdoMail.To = email
cdoMail.Subject = "Your requested password."
cdoMail.Body = pass & vbcrlf & vbcrlf & vbcrlf _
& "*** THIS MESSAGE HAS BEEN AUTOMATICALLY GENERATED ***"

cdoMail.Send
Set cdoMail = Nothing
End Sub
%>

</body>
</html>
Medlem sedan juli 20003 825 inlägg
#8

Du kan ju börja med att byta avsändare från "EMAIL@DOMÄN.COM" till något mer förtroendeingivande

Sen fölrutsätter koden att du har en databas med fälten

[users] <- tabell
pass <- post, text 20 tecken, tillåt nollängd
email <- post, text 50 tecken, tillåt nollängd

Du har även döpt databasfilen till "users.mdb" vilket kan vara lite förvirrande om du är ny till detta. Den KAN heta "users.mdb" men den kan lika gärna heta "community.mdb".

------------------
Never underestimate your opponents.

Medlem sedan sep. 2000314 inlägg
#9

Du kan ju börja med att byta avsändare från "EMAIL@DOMÄN.COM" till något mer förtroendeingivande

Det har jag på mitt test.
Mailet kommer utan problem. Problemet är att det inte står någonting alls där "pass" är tänkt att stå.

Sen fölrutsätter koden att du har en databas med fälten
[users] <- tabell
pass <- post, text 20 tecken, tillåt nollängd
email <- post, text 50 tecken, tillåt nollängd

Ja databasen heter users, tabellen heter users samt att fälten heter pass och email.

Medlem sedan sep. 2000314 inlägg
#10

Nu funkar det. Här är en kod för att få glömda lösenord skickade till emailen.
I exemplet heter:
Databasen=users
Tabellen=users
Fälten=email och pass

<%@Language=VBScript%>
<%Response.Buffer=True%>

<html>
<body>

<%
'grab the value entered in the form, if no value was entered then show the form
email = Trim(Request.Form("email"))
If Len(email) < 1 Then
%>

<center><font color="blue">Forget your password?</font><p>
<table>
<form method="post">
<tr><td><center>Please Enter Your <b>Email Address</b></center></td></tr>
<tr><td><center><input type="text" name="email"></center></td></tr>
<tr><td><center><input type="submit" value="Submit"></center></td></tr>
</table>
</form>
</center>

<%
'otherwise, query the database and grab the password associated with the value entered in the form
Else
	Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=D:\InetPub\wwwroor\users.mdb"

sql = "SELECT pass, email FROM users WHERE email = '"&email&"'"
Set RS = Conn.Execute(sql)

'if the value does not match any record in the database then tell the user
If RS.EOF Then
Response.write "<p><br><br><br><center>Invalid Email Address!</center>"
'otherwise, a match is found
Else
'grab the password from the database
pass = RS("pass")
'call the SendPW subroutine passing the email address and the password as arguments
Call SendPW(pass, email)
Response.Write "<p><br><br><br><center>Your Password has been sent!</center>"

RS.Close
Conn.Close
Set RS = Nothing
Set Conn = Nothing
End If
End If

'here is the subroutine that actually sends the email using CDONTS.
Sub SendPW(pass, email)
Set cdoMail = Server.CreateObject("CDONTS.NewMail")
cdoMail.From = "DIN@EMAIL@DOMÄN.COM"
cdoMail.To = email
cdoMail.Subject = "Your requested password."
cdoMail.Body = pass & vbcrlf & vbcrlf & vbcrlf _
& "*** THIS MESSAGE HAS BEEN AUTOMATICALLY GENERATED ***"

cdoMail.Send
Set cdoMail = Nothing
End Sub
%>

</body>
</html>
Medlem sedan jan. 2001361 inlägg
#11

Kanon!!!

Det funka ju perfekt!!!!!

271 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
134 ms — ändringar (db)