Avatar billede karsten_larsen Praktikant
12. december 2002 - 16:39 Der er 8 kommentarer og
1 løsning

tjekke om brugernavn eksisterer før ændring

Jeg har fået en adgangssystem til at virke, således at brugerne efter logon kan ændre oplysninger om dem selv. Der ud over får de mulighed for at ændre deres brugernavn. Dog er der det minus, at hvis de vælger et brugernavn som eksisterer i forvejen, så går det galt!

Hvordan kan jeg sikre mig at de ikke vælger et allerede taget brugernavn.

:-) Karsten

Nedenfor følger min kode:

<%
Option Explicit
Dim sql, objRecBrugernavn, brugerId, brugernavn, fornavn, efternavn, telefon, email, www, password, notfilled(6), badflag, count, strConnect,objConn,strUpdate

'Tag vaerdier fra formen
brugerId = Request.Form("Id")
brugernavn = Request.Form("brugernavn")
fornavn = Request.Form("fornavn")
efternavn = Request.Form("efternavn")
telefon = Request.Form("telefon")
email = Request.Form("email")
www = Request.Form("www")
password = Request.Form("password")


' Tjek om alt er blevet fyldt ud, badflag bestemmer om fejlfunktion skal kaldes
badflag = 0

if brugernavn = "" then
    notfilled(0) = "Brugernavn"
    badflag = 1
end if
if fornavn = "" then
    notfilled(1) = "Fornavn"
    badflag = 1
end if
if efternavn = "" then
    notfilled(2) = "Efternavn"
    badflag = 1
end if
'if telefon = "" then
'    notfilled(3) = "Telefon"
'    badflag = 1
'end if
'if email = "" then
'    notfilled(4) = "Email"
'    badflag = 1
'end if
'if www = "" then
'    notfilled(5) = "Hjemmeside"
'    badflag = 1
'end if
if password = "" then
    notfilled(6) = "Password"
    badflag = 1
end if

if badflag = 1 then
    signuperror("nofield")
end if

'Skab forbindelse og indsaet brugerens oplysninger i databasen
%>
<!--#include file="database.inc"-->
<%
Set objRecBrugernavn = Server.CreateObject("ADODB.Recordset")
objRecBrugernavn.open "deltagere WHERE Id = " & brugerId , objConn, 3, 3




if  objRecBrugernavn("password") = password then
    objRecBrugernavn("brugernavn") = brugernavn
    objRecBrugernavn("fornavn") = fornavn
    objRecBrugernavn("efternavn") = efternavn
    objRecBrugernavn("telefon") = telefon
    objRecBrugernavn("email") = email
    objRecBrugernavn("www") = www
   
    objRecBrugernavn.Update
    response.cookies("brugernavn") = brugernavn
   
    else
    signuperror("badpwd")
    end if

    objRecBrugernavn.close
    objConn.close
    set objRecBrugernavn = nothing
    set objConn = nothing

    Response.Redirect("profilupdate.asp?updated=true")
%>

<%Function signuperror(errortype)%>
<html>
<head>
</head>
<body >


<table width="100%" border="0">
  <tr>
    <td align="center">
    <%if errortype = "nofield" then%>
        Du har ikke udfyldt følgende felter korrekt: <br>
    <%
    for count = 0 to 6
    if notfilled(count) <> "" then
    %>
        <b><%=notfilled(count)%></b><br>
    <%
    end if
    next
    else
    %>
        <p>Dit password er ikke korrekt</p>
    <%end if%>
    </td>
  </tr>
 
  <tr>
    <td align="center"><a href="java script:self.history.go(-1)">Prøv igen</a></td>
  </tr>
</table>



</font>
</body>
</html>
<%Response.end
End Function%>
Avatar billede medions Nybegynder
12. december 2002 - 16:45 #1
Du laver bare et tjek med objRecBrugernavn.EOF fx

if  objRecBrugernavn("password") = password then

strSQL = "SELECT * FROM tabelnavn_brugere WHERE [brugernavn] = '" & brugernavn & "'"

Set objRsTjekBrugernavn = objConn.Execute(strSQL)
If objRsTjekBrugernavn.EOF
    objRecBrugernavn("brugernavn") = brugernavn
End If

//>Rune
Avatar billede karsten_larsen Praktikant
12. december 2002 - 17:07 #2
Det kan stadig lade sig gøre at vælge et andet brugernavn. Jeg ved ikke om koden er brugt rigtigt nok.

:-) Karsten

her er den ændring jeg har lavet:

Set objRecBrugernavn = Server.CreateObject("ADODB.Recordset")
objRecBrugernavn.open "deltagere WHERE Id = " & brugerId , objConn, 3, 3

if  objRecBrugernavn("password") = password then

    strSQL = "SELECT * FROM deltagere WHERE [brugernavn] = '" & brugernavn & "'"

    Set objRsTjekBrugernavn = objConn.Execute(strSQL)
    If objRsTjekBrugernavn.EOF then
        objRecBrugernavn("brugernavn") = brugernavn
    End If
   
    objRecBrugernavn("brugernavn") = brugernavn
    objRecBrugernavn("fornavn") = fornavn
    objRecBrugernavn("efternavn") = efternavn
    objRecBrugernavn("telefon") = telefon
    objRecBrugernavn("email") = email
    objRecBrugernavn("www") = www
   
    objRecBrugernavn.Update
    response.cookies("brugernavn") = brugernavn
Avatar billede medions Nybegynder
12. december 2002 - 17:20 #3
Set objRecBrugernavn = Server.CreateObject("ADODB.Recordset")
objRecBrugernavn.open "deltagere WHERE Id = " & brugerId , objConn, 3, 3

if  objRecBrugernavn("password") = password then

    strSQL = "SELECT * FROM deltagere WHERE [brugernavn] = '" & brugernavn & "'"

    Set objRsTjekBrugernavn = objConn.Execute(strSQL)
    If objRsTjekBrugernavn.EOF then
        objRecBrugernavn("brugernavn") = brugernavn
        objRecBrugernavn("fornavn") = fornavn
        objRecBrugernavn("efternavn") = efternavn
        objRecBrugernavn("telefon") = telefon
        objRecBrugernavn("email") = email
        objRecBrugernavn("www") = www
    Else
        Response.Write("Brugeren findes i forvejen!")
    End If

   
    objRecBrugernavn.Update
    response.cookies("brugernavn") = brugernavn

//>Rune
Avatar billede karsten_larsen Praktikant
12. december 2002 - 17:59 #4
Når jeg sætter koden ind, så dukker den brugerprofil op som jeg ændrer mit brugernavn til!

:-) Karsten
Avatar billede medions Nybegynder
12. december 2002 - 18:29 #5
Jamen er det da ikke oxo det den skal? *G*

//>Rune
Avatar billede karsten_larsen Praktikant
12. december 2002 - 18:54 #6
Jamen, jeg forstår det ikke!!

Det er mening, at der bliver lavet en søgning af alle brugernavne og hvis brugernavnet fra Request.form er ens med søgning så hedder det "else" ellers når søgningen End of File og brugernavnet er ikke ens - hvor for det så kan opdateres. Det giver mening.

Men når jeg er logét ind som Hans Hansen og vil ændre nogle af/ eller alle sammen email, telefon, hjemmeside, fornavn og efternavn - så går det fint. Helt efter bogen.

Når Hans Hansen vil ændre sit brugernavn "HH" til "AA", så bliver det bekræftiget. MEN så dukker "AA"´s profil op som er en anden en "HH".

Det forstå jeg ikke.

???:-) Karsten
Avatar billede karsten_larsen Praktikant
12. december 2002 - 19:14 #7
Jeg kiger på det senere i aften igen og ligger et link ud, så du kan se hvad jeg mener.

:-) Karsten
Avatar billede karsten_larsen Praktikant
13. december 2002 - 15:21 #8
Jeg fik det til at virke ved at ændre på en variabel.

:-) Karsten
Avatar billede medions Nybegynder
13. december 2002 - 15:24 #9
Fair nok ;o)
Thx 4 Poinz

//>Rune
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