17. februar 2004 - 13:02Der er
21 kommentarer og 1 løsning
random password af bogstaver?
Jeg vil gerne have et felt i min tabel som gennererer et password per record. Passwordet skal helst bestå af tekst. Hvad gør jeg? jeg er nået så langt at jeg kan lave det i tal blot ved at sætte =rnd() i standardværdi, men det giver jo et tilfældigt tal. Anyone??
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
jeg ved ikke om rnd kan bruges med bogstaver, men ellers kunne det gøres (noget mere besværligt) ved at lave et array med alle de mulige bogstaver og så bruge rnd til at generer et tal der henter det på gældende bogstav.
Hvis du saa vil goere passwordet yderligere staerk kan du f.eks randomize laengden af passwordet mellem et givent antal bogstaver (f.eks 6 til 12 bogstaver)
Dim AntalBogstaver as Integer, i as integer Dim PWD as string
I have like 3000 records, why would it be a problem with lots of records, there are numerous random possibilites with letters only, or is that not your point? :-)
I'd rather have it automatically generated without entering data.
Her er et til både små bogstaver og tal og store/små bogstaver og tal:
<% 'Tilfældig streng (små bogstaver) Function RandomString(vLength) Dim vChar Randomize
For I = 1 To vLength vChar = Int(Rnd * 25) + 97
If vChar < 97 Then vChar = 97 If vChar > 122 Then vChar = 122
RandomString = RandomString & Chr(vChar) Next End Function
'Tilfældig streng (store/små bogstaver) 'Function RandomString(vLength) ' Dim vChar ' Randomize ' ' For I = 1 To vLength ' vChar = Int(Rnd * 57) + 65 ' ' If vChar < 65 Then vChar = 65 ' If vChar > 122 Then vChar = 122 ' ' If vChar < 91 Or vChar > 96 Then ' RandomString = RandomString & Chr(vChar) ' Else ' I = I - 1 ' End If ' Next 'End Function %>
det er bare en masse brugere det skal have et password tilknyttet, passwordet skal bare genereres når vi opretter dem i kartoteket senere kan de så bruge det til at logge sig ind forskellige steder på nettet. I øjeblikket har jeg bare lettere adgang til DB'en end til ASP applikationen så i min dovenskab tænkte jeg at jeg kunne få access til at gøre arbejdet :-)
Ønsker du kun passwords med en blanding af store og små bogstaver og tal, rem'er du det øverste ud og fjerner ' fra den nederste function:
<% 'Tilfældig streng (små bogstaver) Function RandomString(vLength) Dim vChar Randomize
For I = 1 To vLength vChar = Int(Rnd * 25) + 97
If vChar < 97 Then vChar = 97 If vChar > 122 Then vChar = 122
RandomString = RandomString & Chr(vChar) Next End Function
'Tilfældig streng (store/små bogstaver) 'Function RandomString(vLength) ' Dim vChar ' Randomize ' ' For I = 1 To vLength ' vChar = Int(Rnd * 57) + 65 ' ' If vChar < 65 Then vChar = 65 ' If vChar > 122 Then vChar = 122 ' ' If vChar < 91 Or vChar > 96 Then ' RandomString = RandomString & Chr(vChar) ' Else ' I = I - 1 ' End If ' Next 'End Function %>
det afhaenger lidt: skal det vaere for nye records eller for alle de gamle?
Under alle omstaendgiheder kunne du smide koden i en funktion PWD
Dermed skal du bare kalde PWD for at randomise et nyt password. Bemaerk ioevrigt at det er bedst at initialisere radnom lookups saa man ikke begynder det samme sted i randomiseringstabellen hver gang. Saa Brug evt system-tiden til at "seede" dn radnom funktion ved at smide flg kode ind i starten af funktionen: Randomize(Now())
Naar du har oprettet funtionen kan du bruge den enten direkte i en formular. Hvis du er ved at lave en update query til dine eksisterende tabeller kan du kalde funtionen direkte fra SQL strengen.
Saa hvis du laver update paa dine 3000 recrods bliver det vel noget i retning af:
strsql = "UPDATE dintabel SET Passwrodfelt = PWD" 'Hvor PWD er funktionen tild omtalt docmd.Runsql(strSQL)
Men underalle omstaendigheder opretter du foerst en funktion i et modul. Funktionen ser saadan ud: Public Function PWD()
Dim AntalBogstaver as Integer, i as integer Dim PWD as string
Randomize(Now())
AntalBogstaver = 6 + int(Rnd()*6)
for i = 1 to Antalbogstaver
PWD = PWD & chr(int(rnd()*26))
next i
End Function
1. Hvis du opretter en nye bruger skal der tilfoejes et random password. Jeg ved ikke helt hvordan du tilfeojer nye brugere, men hvis det f.eks er i en formular kan du tilfeoje passwordet efter at du har indtastet brugernavnet. Saa i designvisningen af formularen finder du properties for feltet med brugernavnet, og laegger kode ind under handlingen AfterUpdate: me.PasswordFelt = PWD
2. Hvis du vil tilfoeje et random password til de tidligere eksisterende brugere i tabellen skal du oprette en sub i et modul og koere denne kode en gang:
Sub GivAllePosterEtPassWord()
strsql = "UPDATE dintabel SET Passwrodfelt = PWD" Docmd.Runsql(strSQL)
pyha! har lige fået en masse andet kylet i hovedet! men jeg er overbevist om at det virker, så jeg smider lige nogle point efter dig. Ellers skriver jeg igen! :-)
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.