Avatar billede Slettet bruger
04. september 2006 - 18:40 Der er 10 kommentarer og
1 løsning

Aktiverings url

Hej..

Jeg er igang med en side. Så spørger jeg fordi ved ikke hvordan man gør. Hvordan gør man at der kommer en mail med et aktiverings url.

Altså efter opretteste får man tilsendt en mail

<!-- ASP MED OPRETTELSE -->
Så er jeg kommet til det jeg ikke ved. Altså det jeg ikke ved er hvordan man henter id'et som man har fået n¨r man har oprettet sin profil.

Håber nogle der forstår og kan hjælpe
Avatar billede madeindk Nybegynder
04. september 2006 - 18:52 #1
<%
SQL = "SELECT id FROM brugere ORDER BY ID DESC"
Set RS = ObjConn.Execute(SQL)

brugerId = rs("id")
%>
Avatar billede Slettet bruger
04. september 2006 - 19:42 #2
Jamen det skal være lige efter oprettelsen. Altså idet man får når man opretter. Altså en kode mail kode i en opret kode.

---
Opret kode
Mal kode ( ID )
--

Hvordan gør jeg det?
Avatar billede madeindk Nybegynder
04. september 2006 - 19:52 #3
SQL = "SELECT id FROM brugere ORDER BY ID DESC"
Set RS = ObjConn.Execute(SQL)

brugerId = rs("id") + 1
Avatar billede madeindk Nybegynder
04. september 2006 - 19:56 #4
Har fundet denne her på nettet.

<%
    fakeValue = 5
    set conn = CreateObject("ADODB.Connection")
    conn.open "<conn string>"
    set rs = CreateObject("ADODB.Recordset")
    rs.open "SELECT [intColumn] from someTable where 1=0", conn, 1, 3
    rs.AddNew
    rs("intColumn") = fakeValue
    rs.update
    response.write "New ID was " & rs("id")
    rs.close: set rs = nothing
    conn.close: set conn = nothing
%>

http://databases.aspfaq.com/general/how-do-i-get-the-identity/autonumber-value-for-the-row-i-inserted.html - næsten nederst...
Avatar billede madeindk Nybegynder
04. september 2006 - 20:01 #5
Men... Jeg har også aktivering af bruger på min side og jeg gør det på den måde at den tilføjer brugeren først, lukker databasen går længere ned i koden og finder den nye bruger. Det fungerer fint og jeg skulle mene det var den sikreste metode.
Avatar billede thesurfer Nybegynder
04. september 2006 - 20:43 #6
Kig på "@@IDENTITY" i SQL..

Eksempel findes her: http://www.kamath.com/tutorials/tut007_identity.asp
Avatar billede thesurfer Nybegynder
04. september 2006 - 20:48 #7
madeindk>
At bruge
- "brugerId = rs("id") + 1"
- "select top 1 from TabelNavn order by id" (også med limit i stedet)

kan give forkert værdi, hvis en anden bruger opretter en post samtidigt..

Derfor skal man bruge @@identity.

Eksempel på *forkert* brug:

Note:
"max id" = (svarende til 'rs("id") + 1' eller 'top 1' / limit)

nuæværende id er: 5
A: opretter en post. ID = 6
B: opretter en post. ID = 7
A: hent max id -> 7 (skulle have været 6)
B: hent max id -> 7 (korrekt, da B var den sidste bruger, men forkert hvis C også oprettede noget)

Kommandoerne bliver afviklet efter hinanden, en ad gangen.. derfor kan man godt få følgende røkkefølge:

A: opret
B: opret
A: hent max id
B: hent max id

I stedet for det man faktisk ville:

A: opret
A: hent max id
B: opret
B: hent max id
Avatar billede madeindk Nybegynder
04. september 2006 - 20:58 #8
Ja, lige præcis. Det kan være forkert, det er også derfor jeg har gjort det på en anden måde på min side. Jeg ved ikke hvordan han har bygget sin db op, men jeg har selv gjort at IP adressen gemmes.

SQL = "SELECT id FROM brugere WHERE ip=" & ip & " ORDER BY ID DESC" fx. - der er ikke så stor sandsynlighed for at 2 brugere opretter i samme sekund på den samme IP adresse, skulle jeg nok mene :-)
Avatar billede Slettet bruger
04. september 2006 - 21:15 #9
madeindk << Må jeg se din kode? Min kode ser sådan her ud:

<%
if request.querystring("Action") = "Sendt" then

Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Driver={MySQL ODBC 3.51 Driver};Server=195.128.174.34;Database=web98750;Option=3;User=web98750;Password=498yq4bz69;"

strSQL = "SELECT * FROM Bruger where LCase(Brugernavn) = '" & LCase(Request.Form("Brugernavn")) & "'"
Set rs = Conn.Execute(strSQL)

if not rs.EOF then

response.write("<ul><li>Brugernavnet bliver allerede brugt.</li></ul>")
end if

Conn.Close
Set Conn = Nothing

if request.form("Kodeord") = request.form("GKodeord") then
if request.form("Mail") = request.form("GMail") then
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Driver={MySQL ODBC 3.51 Driver};Server=*****;Database=*****;Option=3;User=*****;Password=*****;"

strSQL = "INSERT INTO Bruger (Brugernavn, Kodeord, Mail, Aktiv, Ram, MB, styrresystem)VALUES('" & request.form("Brugernavn") &"', '" & request.form("Kodeord") & "', '" & request.form("Mail") & "', 'Nej', '10', '100', 'Windows 95');"
Conn.Execute(strSQL)
response.write("Bruger oprettet")
Conn.Close
Set Conn = Nothing
else
response.write("<ul><li>Dine 2 mails er ikke ens</li></ul>")
end if
else
response.write("<ul><li>Dine 2 kodeord er ikke ens</li></ul>")
end if
else
%>
Avatar billede madeindk Nybegynder
04. september 2006 - 21:19 #10
Jeg har rettet i din kode så den ligner min til forveksling.

<%
if request.querystring("Action") = "Sendt" then

Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Driver={MySQL ODBC 3.51 Driver};Server=195.128.174.34;Database=web98750;Option=3;User=web98750;Password=498yq4bz69;"

strSQL = "SELECT * FROM Bruger where LCase(Brugernavn) = '" & LCase(Request.Form("Brugernavn")) & "'"
Set rs = Conn.Execute(strSQL)

if not rs.EOF then

response.write("<ul><li>Brugernavnet bliver allerede brugt.</li></ul>")
end if

Conn.Close
Set Conn = Nothing

if request.form("Kodeord") = request.form("GKodeord") then
if request.form("Mail") = request.form("GMail") then

Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Driver={MySQL ODBC 3.51 Driver};Server=*****;Database=*****;Option=3;User=*****;Password=*****;"

strSQL = "INSERT INTO Bruger (Brugernavn, Kodeord, Mail, Aktiv, Ram, MB, styrresystem)VALUES('" & request.form("Brugernavn") &"', '" & request.form("Kodeord") & "', '" & request.form("Mail") & "', 'Nej', '10', '100', 'Windows 95');"
Conn.Execute(strSQL)

strSQL = "SELECT id FROM bruger ORDER BY ID DESC "
Set RS = Conn.Execute(strSQL)

' Send mail til rs("id")

response.write("Bruger oprettet")

Conn.Close
Set Conn = Nothing

else
response.write("<ul><li>Dine 2 mails er ikke ens</li></ul>")
end if
else
response.write("<ul><li>Dine 2 kodeord er ikke ens</li></ul>")
end if
else
%>
Avatar billede madeindk Nybegynder
07. september 2006 - 21:41 #11
Du har ikke meldt tilbage om du kan bruge det - men her er mit svar.
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