Avatar billede springer Nybegynder
16. marts 2001 - 11:54 Der er 13 kommentarer og
1 løsning

Skift password

jeg har følgende script der skal bruges til at skifte et password med. Ideen er, at man skal indtaste sit gamle password for derefter at indtaste det nye to gange.
Brugernavnet er gemt via session objektet fra en tidligere side.
Jeg får ingen fejl meddelse, men der sker ingen opdatering, elelr fejl hvis der er tastet noget forkert ind.

<%
\' Hvis der er blevet trykket på knappen \"skift\"
If Request.Form(\"Action\") = \"skift\" Then
    \' Her forberedes de indtastede værdier til validering
    strPWDGL = Trim(Replace(Request.Form(\"gammel\"),\"\'\",\"\"))
    strPWDNy1 = Trim(Replace(Request.Form(\"AdgangskodeNy1\"),\"\'\",\"\"))
    strPWDNy2 = Trim(Replace(Request.Form(\"AdgangskodeNy2\"),\"\'\",\"\"))

    \' Hvis der er skrevet noget i både brugernavn og adgangskode
    If Len(PWDGL) > 0 And Len(strPWDNy1) > 0 And Len(strPWDNy2) and strPWDNy1 = strPWDNy2 Then

        \' DSNLess forbindelse til databasen
        Set myConn = Server.CreateObject(\"ADODB.Connection\")
        myConn.Open \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"bruger.mdb\")

        \' Opbygning af SQL streng
        strSQL = \"SELECT Password FROM Users\"&_
            \" WHERE (Username = \'\" &session(\"UserID\")& \"\')\"&_
            \" AND (Password = \'\" & strPWDGL & \"\')\"

        Set rs = myConn.Execute(strSQL)
        If Not (rs.BOF Or rs.EOF) Then
            \' Hvis alt er OK
       
            tabel.addnew
            tabel(\"Password\")=request.form(\"AdgangskodeNy1\")
            tabel.update
           
        Else
            \' Hvis der er sket en fejl
            strERR = \"Der er sket en fejl, prøv igen\"
        End If

        \' Rydder op i vores connection objekt
        myConn.Close
        Set myConn = Nothing

    Else
        \' Hvis der ikke var angivet data i alle felterne
        strErr = \"Du skal udfylde alle felterne\"
    End If

    If Len(strErr) > 0 Then
        \' Her laves fejlmeddelsen om til rød skrift
        strErr = \"<p><font color=red>\" & strErr & \"</font></p>\"
    End If
End If
%>
<html><head>
<title>Skift password script</title>
</head><body>
<form method=\"POST\" action=\"Change.asp\">
  <p><font size=\"4\">Skriv dit gamle password og dit nye password</font></p><%=strErr%>
  <table border=\"0\">
    <tr>
      <td width=\"50%\">Indtast gammelt password:</td>
      <td width=\"50%\"><input type=\"password\" name=\"Gammel\" size=\"20\"></td>
    </tr>
    <tr>
      <td width=\"50%\">Indtast ny adgangskode:</td>
      <td width=\"50%\"><input type=\"password\" name=\"AdgangskodeNy1\" size=\"20\">
        </td>
    </tr>
    <tr>
      <td width=\"50%\">Gentag ny adgangskode:</td>
      <td width=\"50%\"><input type=\"password\" name=\"AdgangskodeNy2\" size=\"20\">
        </td>
    </tr>
  </table>
  <p><input type=\"submit\" value=\"change\" name=\"Action\"></p>
</form>
</body></html>
Avatar billede stigc Nybegynder
16. marts 2001 - 11:58 #1
Du selector med det nye password, som endnu ikke er i databasen:



        \' Opbygning af SQL streng
        strSQL = \"SELECT Password FROM Users\"&_
            \" WHERE (Username = \'\" &session(\"UserID\")& \"\')\"&_
            \" AND (Password = \'\" & strPWDGL & \"\')\"


Hvis brugernavnet er unikt er det nok med:
\'


        \' Opbygning af SQL streng
        strSQL = \"SELECT Password FROM Users\"&_
            \" WHERE (Username = \'\" &session(\"UserID\")& \"\')\"
Avatar billede stigc Nybegynder
16. marts 2001 - 11:59 #2
Du behøver heller ikke parentensen!
Avatar billede erikjacobsen Ekspert
16. marts 2001 - 11:59 #3
Du skal vel bare droppe linien
      tabel.addnew
for du skal ikke have en ny post, men ændre i den gamle
Avatar billede springer Nybegynder
16. marts 2001 - 12:04 #4
Hmm, der sker stadig intet. Stadig ingen fejl meddelser.

Stigc:
Brugernavnet er unikt
Avatar billede springer Nybegynder
16. marts 2001 - 12:16 #5
jeg har skiftet
If Request.Form(\"Action\") = \"skift\" Then
ud med
If Request.Form(\"Action\") = \"change\" Then

men nu får jeg blot at vide at jeg skal udfylde alle felterne ......
Avatar billede erikjacobsen Ekspert
16. marts 2001 - 12:35 #6
  If Len(PWDGL) > 0 And Len(strPWDNy1) > 0 And Len(strPWDNy2)>0 and strPWDNy1 =
                      strPWDNy2 Then
Avatar billede nute Nybegynder
16. marts 2001 - 13:03 #7
<%

If Request.Form(\"Action\") = \"skift\" Then
    \' Her forberedes de indtastede værdier til validering
    strPWDGL = Trim(Replace(Request.Form(\"gammel\"),\"\'\",\"\"))
    strPWDNy1 = Trim(Replace(Request.Form(\"AdgangskodeNy1\"),\"\'\",\"\"))
    strPWDNy2 = Trim(Replace(Request.Form(\"AdgangskodeNy2\"),\"\'\",\"\"))

    IF strPWDNy1 = strPWDNy2 then
      strSQL = \"UPDATE Users SET PassWord = \'\" & strPWDNy1 & \"\' WHERE Username = \'\" & session(\"UserID\") & \"\' AND PassWord = \'\" & strPWDGL & \"\'\"
      Set rs = myConn.Execute( strSQL )
      IF rs.EOF then
        strERR = \"Der er sket en fejl, prøv igen\"
      END IF
    END IF
END IF
%>

Dette er alt du behøver

/nute
Avatar billede erikjacobsen Ekspert
16. marts 2001 - 13:16 #8
Det er da håbløst idiotisk at FJERNE enkeltstroffer i det brugeren
indtaster!
Avatar billede nute Nybegynder
16. marts 2001 - 13:20 #9
det skal jeg være enig i !!!!! da vet jo ikke brukeren hva passordet er (hvis man ikke sender det til han) men det er jo ikke særlig smart...

(( man legger ikke merke til det når man utfører en copy&paste ting....;) ))

/nute
Avatar billede erikjacobsen Ekspert
16. marts 2001 - 13:21 #10
Det var heller ikke til dig nute, beklager
Avatar billede nute Nybegynder
16. marts 2001 - 13:22 #11
tok det ikke personlig, so don\'t worry ;)
Avatar billede springer Nybegynder
19. marts 2001 - 09:14 #12
Hmm, skidet virker stadig ikke....

Sådan ser det ud nu:
<%
\' Hvis der er blevet trykket på knappen \"change\"
If Request.Form(\"Action\") = \"change\" Then
    \' Her forberedes de indtastede værdier til validering
    strPWDGL = Trim(Replace(Request.Form(\"gammel\"),\"\'\",\"\"))
    strPWDNy1 = Trim(Replace(Request.Form(\"AdgangskodeNy1\"),\"\'\",\"\"))
    strPWDNy2 = Trim(Replace(Request.Form(\"AdgangskodeNy2\"),\"\'\",\"\"))

    \' Hvis der er skrevet noget i både brugernavn og adgangskode
    if strPWDNy1 = strPWDNy2 then
    strSQL = \"UPDATE Users SET PassWord = \'\"& strPWDNy1 & \"\' WHERE Username = \'\" &session(\"UserID\") & \"\' AND Password = \'\" & strPWDGL & \"\'\"
   
        \' DSNLess forbindelse til databasen
        Set myConn = Server.CreateObject(\"ADODB.Connection\")
        myConn.Open \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"bruger.mdb\")

        \' Opbygning af SQL streng
        strSQL = \"SELECT Password FROM Users\"&_
            \" WHERE (Username = \'\" &session(\"UserID\")& \"\')\"
   
        Set rs = myConn.Execute(strSQL)
       
        If (rs.BOF Or rs.EOF) Then
            strERR = \"Der er sket en fejl, prøv igen\"
        End If

        \' Rydder op i vores connection objekt
        myConn.Close
        Set myConn = Nothing

    If Len(strErr) > 0 Then
        \' Her laves fejlmeddelsen om til rød skrift
        strErr = \"<p><font color=red>\" & strErr & \"</font></p>\"
    End If
    End if
End If
%>
<html><head>
<title>Skift password script</title>
</head><body>
<form method=\"POST\" action=\"Change.asp\">
  <p><font size=\"4\">Skriv dit gamle password og dit nye password</font></p><%=strErr%>
  <table border=\"0\">
    <tr>
      <td width=\"50%\">Indtast gammelt password:</td>
      <td width=\"50%\"><input type=\"password\" name=\"Gammel\" size=\"20\"></td>
    </tr>
    <tr>
      <td width=\"50%\">Indtast ny adgangskode:</td>
      <td width=\"50%\"><input type=\"password\" name=\"AdgangskodeNy1\" size=\"20\">
        </td>
    </tr>
    <tr>
      <td width=\"50%\">Gentag ny adgangskode:</td>
      <td width=\"50%\"><input type=\"password\" name=\"AdgangskodeNy2\" size=\"20\">
        </td>
    </tr>
  </table>
  <p><input type=\"submit\" value=\"change\" name=\"Action\"></p>
</form>
</body></html>
Avatar billede erikjacobsen Ekspert
19. marts 2001 - 09:39 #13
Du udfører ikke
  strSQL = \"UPDATE Users SET PassWord = \'\"& strPWDNy1 & \"\' WHERE Username =
  \'\"  &session(\"UserID\") & \"\' AND Password = \'\" & strPWDGL & \"\'\"
Du laver bare strengen. Du skal lige proppe den igennem en myconn.execute,
f.eks. ved at droppe linien
    strSQL = \"SELECT Password FROM Users\"&_
    \" WHERE (Username = \'\" &session(\"UserID\")& \"\')\"
En update returnerer ikke et recordset, så du kan ikke lave testen med
rs.BOF og rs.EOF.
                         
Avatar billede springer Nybegynder
19. marts 2001 - 09:43 #14
Kanont, Tak for hjælpen.

Nu skal jeg bare have skrevet fejlmeddelser og en redirect, men det skulle være til at klare
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