04. oktober 2002 - 16:24Der er
27 kommentarer og 1 løsning
Skal automatisk sende e-mail
Hej, Jeg skal have lavet en glemt password funktion som automatisk sender oplysninger til brugerens e-mail. Ligeledes har jeg en formular som brugerne skal bruge til at blive medlem. Den smider så info ind i databasen men den skal også sende det til den nye bruger.
Jeg har skrevet to forskellige spørgsmål på én gang, fordi jeg går ud fra de næsten er ens.
Er der nogle som kan hjælpe mig igang eller mere til? fordi jeg har nogle bøger som jeg kigger i men kan ikke rigtig få det til at virker :(
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
<table border="1"> <form method="post" action="sendpassword.asp" name="sendpassword"> <tr><td colspan="2" align="center">Jeg har glemt mit password, send det til mig.</td></tr> <tr><td>E-mail:</td><td><input name="email"></td></tr> <tr><td colspan="2" align="center"><input type="submit" value="Send" name="Action"></td></tr> </form> </table>
Og så koden som sender mailen ud:
<HTML> <head> <META HTTP-EQUIV=Refresh CONTENT="5; URL=login.asp"> </head> <body><center> <% function fixSring(strInput) if len(strInput) > 0 then outString = replace(outString,"'","''") fixSring = outString else fixSring = strInput end if end function
if Request.ServerVariables("REQUEST_METHOD") = "POST" then 'Inkulder database forbindelsen. %> <!--#include file="dsn.asp"--> <%
Set rs = Server.CreateObject("ADODB.RecordSet")
email = fixSring(Request.Form("email"))
strSQL= "SELECT * FROM dp_members WHERE email = '" & email & "';"
Set rs = Conn.Execute (strSQL)
if not rs.EOF then 'send password til brugeren Set JMail= Server.CreateObject("JMail.SMTPMail") JMail.ServerAddress = "websmtp.DIN_SERVER.dk" JMail.Sender = "admin@xxxxx.dk" JMail.SenderName = "xxxxx Forum" JMail.Subject = "Password til xxxxx forum" JMail.AddRecipient rs("email") JMail.AddHeader "Originating-IP", Request.ServerVariables("REMOTE_ADDR")
BodyText = "Du har bedt om at få tilsendt dit password til xxxxx Forum." & vbCrLf BodyText = BodyText & "Dit password er: " & rs("userpassword")
JMail.Body = BodyText
JMail.Silent = true JMail.Execute Set JMail = Nothing
Response.Write "En mail med dit password er send til dig." else Response.Write "kunne ikke finde bruger oplysninger." end if
Conn.Close else Response.Redirect("login.asp") end if %> <br><br> Du vil automatisk bliver stillet om til login siden inden for 5 sekuner. </center> </body> </HTML>
Her er script som sender en mail ud når man opretter sig på siten:
Ført tabellen med en form:
<table border="1"> <form method="post" action="opret.asp" name="newmember"> <tr><td colspan="2">Jeg vil gerne oprettes som bruger af XXXX forum.</td> <tr><td>Brugernavn</td><td><input name="username"></td></tr> <tr><td>Password</td><td><input name="password"></td></tr> <tr><td>Navn:</td><td><input name="realname"></td></tr> <tr><td>Email:</td><td><input name="email"></td></tr> <tr><td colspan="2" align="center"><input type="submit" value="Tilmeld" name="Action"></td></tr> </form> </table>
Og så koden som sender mailen ud.:
<HTML> <head> <META HTTP-EQUIV=Refresh CONTENT="5; URL=login.asp"> </head> <body><center> <% function fixString(strInput) if len(strInput) > 0 then outString = replace(outString,"'","''") fixString = outString else fixString = strInput end if end function
if Request.ServerVariables("REQUEST_METHOD") = "POST" then %> <!--#include file="dsn.asp"--> <% Set rs = Server.CreateObject("ADODB.RecordSet")
SendMail = true if SendMail = true then Set JMail= Server.CreateObject("JMail.SMTPMail") JMail.ServerAddress = "websmtp.DIN_SIDE.dk" JMail.Sender = "admin@xxxx.dk" JMail.SenderName = "xxxx Forum" JMail.Subject = "Velkommen til xxxx forum" JMail.AddRecipient email JMail.AddHeader "Originating-IP", Request.ServerVariables("REMOTE_ADDR")
BodyText = "Hej" & vbCrLf & vbCrLf BodyText = BodyText & "Du er nu registrert som bruger af xxxx forum." & vbCrLf BodyText = BodyText & vbCrLf & vbCrLf BodyText = BodyText & "Med Venlig Hilsen" & vbCrLf BodyText = BodyText & " Admin XXXXXX Forum"
JMail.Body = BodyText JMail.Silent = true JMail.Execute Set JMail = Nothing end if
Response.Write "Du er nu oprettet som bruger du vil modtage en email med ekstra information." else Response.Write "Brugernavnet er taget eller der er en bruger med samme email adresse, prøv et andet." end if
Conn.Close else Response.Redirect("login.asp") end if %> <br><br> Du vil automatisk bliver stillet om til login siden inden for 5 sekuner. </center> </body> </HTML>
hbhansen >> jeg syntes slet ikke jeg kan få din kode til at vise en fejl er noget. Så jeg har lidt svært ved at komme videre med den :(
eagleeye >> Her i starter snakker jeg kun om den første kode du skrev så vi kan få den på plads først :) Har du en idé om hvad fejlen kan være når den skriver "kunne ikke finde bruger oplysninger." Også selvom jeg skriver en e-mail som er i databasen ??
Ja så skriver den SELECT * FROM bruger WHERE brugeremail = '';kunne ikke finde bruger oplysninger.
Du vil automatisk bliver stillet om til login siden inden for 5 sekuner
Hvis jeg sender dig koden og min databse vil du så kigger på det ? Fordi jeg tror der er en skrive fejl eller noget. Og det har du nok lidt nemmere ved at finde.
Prøv lige at skifte koden ud i sendpassword med alt dette, der havde sneget sig en fejl ind i functioen fixString, det må du undskylde...:
<HTML> <head> <META NAME="Generator" CONTENT="Stone's WebWriter 3.5"> <META HTTP-EQUIV=Refresh CONTENT="5; URL=login.asp"> </head> <body><center> <% function fixString(strInput) if len(strInput) > 0 then outString = replace(strInput,"'","''") fixString = outString else fixString = strInput end if end function
if Request.ServerVariables("REQUEST_METHOD") = "POST" then %> <% strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("bruger.mdb") Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open strDSN
Set rs = Server.CreateObject("ADODB.RecordSet")
email = fixString(Request.Form("email"))
strSQL= "SELECT * FROM bruger WHERE brugeremail = '" & email & "';"
Response.write strSQL
Set rs = Conn.Execute (strSQL)
if not rs.EOF then 'send password til brugeren Set JMail= Server.CreateObject("JMail.SMTPMail") JMail.ServerAddress = "mail.3dekspert.dk" JMail.Sender = "info@3dekspert.dk" JMail.SenderName = "3Dekspert.dk" JMail.Subject = "Password til 3Dekspert.dk" JMail.AddRecipient rs("email") JMail.AddHeader "Originating-IP", Request.ServerVariables("REMOTE_ADDR")
BodyText = "Du har bedt om at få tilsendt dit password til 3Dekspert.dk" & vbCrLf BodyText = BodyText & "Dit password er: " & rs("brugerKode")
JMail.Body = BodyText
JMail.Silent = true JMail.Execute Set JMail = Nothing
Response.Write "En mail med dit password er send til dig." else Response.Write "kunne ikke finde bruger oplysninger." end if
Conn.Close else Response.Redirect("login.asp") end if %> <br><br> Du vil automatisk bliver stillet om til login siden inden for 5 sekuner. </center> </body> </HTML>
Nej det går nok. :) Men syntes stadig den driller med denne fejl SELECT * FROM bruger WHERE brugeremail = 'rene@itkurven.dk'; ADODB.Recordset error '800a0cc1'
Item cannot be found in the collection corresponding to the requested name or ordinal.
Det lyder godt :)... ved den anden skal functionen fixString gogså rettes til denne:
function fixString(strInput) if len(strInput) > 0 then outString = replace(strInput,"'","''") fixString = outString else fixString = strInput end if end function
Jep det virker også perfekt :) Så det takker jeg mange gange for. Du skal også nok få alle point. Men jeg skal lige høre om du også har en bekræft link funktion ?? Altså at folk skal bekræft et link på e-mail før deres profil kan bruges på siden ?? Det skal du nok få flere point for...
Ud over kolonnerne username, userpassword, realname, email har jeg en kolonne valid_account så vidt jeg husker som default i databasen bliver sat til 0. Når man acceptere man på siden så bliver valid_account sat til 1.
Ja og så skal det være en betinglese at valid_account er 1 før man kan logge ind.. Det link skal vel gå hen til en side hvor der er en kode som laver 0 om til 1 på det aktuelle brugernavn..
Ok kolonnen jeg har hedder account_valid så det var da ganske tæt på :) Jeg har lavet en automatisk login så den sider brugernavn og password til min "check login side" som så logger folk ind.
og her er filen godkend.asp
<% Response.Buffer = true
mode = "askforuseraccept" if Request.ServerVariables("REQUEST_METHOD") = "POST" then username = Request.Form("user") mode = "accepted" Response.Expires = Now() - 1000 else username = Request.QueryString("username") end if
if username = "" then Response.Redirect("login.asp") end if Error_Code = 0
if mode = "accepted" then strSQL= "UPDATE dp_members SET account_valid = 1 WHERE username = '" & username & "';" Conn.Execute(strSQL) strSQL= "SELECT * FROM dp_members WHERE username = '" & username & "';" set rs = Conn.Execute(strSQL) %> <form method="post" name="loginform" action="login_chk.asp"> <input type="hidden" name="username" value="<%=rs("username")%>"> <input type="hidden" name="password" value="<%=rs("userpassword")%>"> </form> Din bruger profil er nu aktiv. Du bliver automatisk logget ind. <br> Hvis der ikke sker noget så tryk <a href="login.asp">her</a> for at logge ind. <% 'Conn.Close %> <script language=javascript> document.loginform.submit() </script> <% else Set rs = Server.CreateObject("ADODB.RecordSet") strSQL= "SELECT * FROM dp_members WHERE username = '" & username & "';" Set rs = Conn.Execute (strSQL)
if (rs.EOF AND rs.BOF) then 'Bruger findes ikke Error_Code = 1 else if (Clng(rs("account_valid")) = Clng(1)) then 'Brugeren er valid Error_Code = 1 else %> Velkommen til xxxx Forum, du mangler kan at godkende dit brugernavn så kan du logge ind i forum med det samme efter det. <br> Din profil bliver aktiv ved at trykke på godkend knappen. <form action="<%=Request.ServerVariables("SCRIPT_NAME")%>" method="post"> <input type="hidden" name="user" value="<%=username%>"> <input type="submit" name="Godkend" value="Godkend"> </form> <% end if end if end if
Conn.Close
if Error_Code = 1 then Response.Clear Response.Redirect("login.asp") end if
Jep du er helt kanon.. Det har jeg også fået til at virke nu. Vil du ikke have ekstra point for det ?
Jeg vil dog prøve at lave bekræft linket om så det ikke er brugernavn der står fordi nu kan man jo også snyde. Men nu må vi se om jeg kan finde rundt i det. :)
Men mit håb om at bliver færdig med hjemmesiden i en overkuelig fremtid ser lys ud efter din hjælp.
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.