Avatar billede killstun Nybegynder
15. december 2004 - 18:49 Der er 12 kommentarer og
1 løsning

Aktivering af bruger via e-mail

Jeg har en ASP hjemmeside med en database til brugere. Når disse brugere har tilmeldt sig, får de tilsendt en mail med brugernavn og kode. Men samtidig vil jeg gerne have at de skal have et link for at aktivere deres konto. Derfor tænkte jeg at man kunne lave en tabel som hedder "Aktiv" i databasen med fx værdien 1. Når de klikker på linket i mailen, bliver de ført videre til en side (fx aktiver.asp) som laver værdien om til 2. Når man så logger ind, kunne man tjekke at denne værdi er sat til 2 for at man kan logge ind. Så langt så godt. Men hvordan det udføres i praksis kan jeg ikke selv hitte ud af. Håber der er nogle som kan hjælpe med hvordan man opretter:

. Linket i e-mailen (Mailer.BodyText  = "http://www.domene.dk/aktiver.asp?etllerandet)
. Hvordan man laver værdien om på aktiver.asp siden
. En tilføjelse i login scriptet som tjekker at værdien er sat rigtigt.

Lidt info om databasen:
Databasens filnavn hedder "databasen.mdb". Indholdet hedder "bruger", og af vigtige tabbeller kan jeg nævne "ID", "Login", "Password" og "Aktiv".

Lidt info om tilmeldings siden, da jeg ikke anvender JMail som man kan se:
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("/vti_log/databasen.mdb")
Conn.Open DSN

strSQL = "Insert into bruger (Login, Password, Email) values('" & Request.Form("Login") & "','" & Request.Form("Password") & "','" & Request.Form("Email") & "')"
Conn.Execute(strSQL)

Dim Mailer
Set Mailer = Server.CreateObject("SMTPsvg.Mailer")

osv...
Avatar billede kalp Novice
15. december 2004 - 21:10 #1
Du skal bare lave en update på din aktiver.asp side... og ved login skal du lave en Where aktiv=2 for at kunne logge ind.

om du mangler da feltet i din database... altså under insert... der skal automatisk indsættes et 1 tal i et felt kaldet "aktiv" eller lignende
Avatar billede killstun Nybegynder
16. december 2004 - 17:50 #2
Jeg har nu indført en insert kommando på opret.asp siden. Men hvordan laves siden aktiver.asp? Altså med Request.Querystring osv. Kan du ikke give et eksempel på hvordan det er bygget op i kode? Et andet problem jeg har er at den ikke vil acceptere rs("ID") selvom hver bruger automatisk får tildelt et ID? Jeg har vedlagt hele min opret.asp (redigeret lidt) side nu, i håb om at nogle kan hjælpe da jeg har kæmpet i mange dage nu:

<%
strLogin = Request.Form("Login")
strPassword = Request.Form("Password")
strEmail = Request.Form("Email")
%>

<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("/vti_log/databasen.mdb")
Conn.Open DSN

strSQL = "Select * From bruger"
Set rs = Conn.Execute(strSQL)
strLogin = Request.Form("Login")
Do
if strLogin = rs("Login") THEN
Response.Redirect "findes.asp"
end if
rs.MoveNext
Loop While Not rs.EOF

strSQL = "Insert into bruger (Login, Password, Email, Aktiv) values('" & Request.Form("Login") & "','" & Request.Form("Password") & "','" & Request.Form("Email") & "','" & 1 & "')"
Conn.Execute(strSQL)

Dim Mailer
Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
Mailer.FromName  = "Mit navn"
Mailer.FromAddress= "afsender@email.dk"
Mailer.RemoteHost = "smtpmail.activeisp.com"
Mailer.AddRecipient Request.Form("Login"), Request.Form("Email")
Mailer.Subject    = "Tilmelding til sitet"
Mailer.BodyText  = "Hej " & Request.Form("Login") & VbCrLf & VbCrLf
Mailer.BodyText  = "Dit brugernavn er: " & Request.Form("Login")
Mailer.BodyText  = "Dit password er: " & Request.Form("Password")
Mailer.BodyText  = "http://www.domene.dk/aktiver.asp?id=" & rs("ID") & "&password=" & Request.Form("Password")


if Mailer.SendMail then
  Response.Write "Tak for deres tilmelding."
else
  Response.Write "Der skete en fejl ved afsendelse af e-mail: " & Mailer.Response
end if

' Fjern objekt igen
Set Mailer = Nothing

Conn.Close
Set Conn = Nothing
%>
Avatar billede kalp Novice
16. december 2004 - 19:56 #3
aktiver siden skal requeste brugerID fra brugeren... og så finde ham i databasen og sætte hans aktiv status til 2..

sådan så det link brugeren klikker på kommer til at se sådan her fx

http://www.domene.dk/aktiver.asp?id=

altså

http://www.domene.dk/aktiver.asp?id=34243

så vil brugeren 34243 være aktiv ... på aktiver siden requester du bare ID'en nemlig og finder ham frem i databasen hvor du ændre hans status til aktiv.. fra 1 til 0.
Avatar billede kalp Novice
16. december 2004 - 19:58 #4
kan sagtens hjælpe dig med at lave aktiver siden når du først har fået styr på det med id'en...

det kan være den ikke virker fordi den ikke aner hvilken bruger den skal sætte id'et ind fra.. han er jo dårligt nok oprettet...

en løsning kunne være at tilføje det sidste id i databasen +1 hehe.. men det kan måske .. og kun måske give problemer hvis to personer opretter sig samtidig.. er ikke sikker..

og ellers er det måske syntaksen der er forkert
Avatar billede kalp Novice
16. december 2004 - 20:07 #5
her har du aktiver.asp


<%option explicit%>

   
<%
    dim connection,id,SQLstringK

    Set Connection = Server.CreateObject("ADODB.Connection")
    Connection.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="&Server.MapPath("database.mdb")
   
    id    =        Trim(Request.QueryString("id"))
           
    SQLstringK="UPDATE DINTTABEL SET aktiv=(2) WHERE id=" & id
    Connection.Execute(SQLstringK)
    response.buffer=true
    response.clear
    response.redirect "index.asp"
    response.end
    %>
Avatar billede kalp Novice
16. december 2004 - 20:11 #6
det link du sender brugeren skal sådan set være til denne side... og i url'en skal du medsende id'et!

eks på url
http://www.url.dk/aktiver.asp?id=234464

så virker det!
Avatar billede kalp Novice
17. december 2004 - 11:22 #7
ellers kan du måske være heldig... lav et felt som kan holde en bestemt kode til en person.. istedet for at bruge ID...

kig her

http://eksperten.dk/spm/572023
Avatar billede killstun Nybegynder
17. december 2004 - 11:25 #8
Thx kalp for aktiver siden. Men du har ret i det med ID'et. Det er som om den ikke ved hvilket ID den skal tage fat i. De andre informationer får den jo fra det foregående form felt, og ikke direkte fra databasen. Men alligevel burde det være muligt at hive fat i det selvom man lige er oprettet, ikk? Ellers bliver det jo meget omstændigt. Vil prøve at rode lidt med det og vende tilbage hertil.
Avatar billede killstun Nybegynder
17. december 2004 - 11:26 #9
Så lige din besked. Det tænkte jeg nemlig også på. Kunne man ikke evt. bare bruge Login navnet og password til at tjekke om det er den rigtige bruger i stedet for ID. Det er jo lavet sådan ikke 2 personer ikke kan bruge samme brugernavn.
Avatar billede killstun Nybegynder
17. december 2004 - 16:12 #10
Jeg har nu fået lavet det hele, men via brugernavnet. Lidt irreterende at jeg ikke kan få rs("ID") til at virke? Kunne være sjovt hvis vi kunne hitte ud af hvorfor den ikke vil godkende rs("ID") syntes jeg. Som om at den ikke aner hvilket ID den skal tage fat i som du siger kalp. Men hvordan får vi den til at hitte frem til det korrekte ID? Jeg har prøvet at lukke og oprette forbindelsen mellem insert scriptet og mail scriptet, men det resultere bare i at den tager fat i det første ID der findes i databasen.
Avatar billede kalp Novice
17. december 2004 - 21:24 #11
kan du få fat på den sidste ID i databasen ellers? for så kunne du som jeg foreslog prøve at sige ID+1 :)
Avatar billede killstun Nybegynder
17. december 2004 - 21:47 #12
Jeg prøver. Må lege lidt med det og se hvad jeg kan hitte ud af. Vender lige tilbage herpå. Thx igen kalp.
Avatar billede kalp Novice
03. januar 2005 - 23:34 #13
husk at lukke spørgsmålet hvis du fik det løst:)
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