Avatar billede myanimalfarm Nybegynder
17. februar 2004 - 13:02 Der 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??
Avatar billede hubs Nybegynder
17. februar 2004 - 13:12 #1
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.
Avatar billede terry Ekspert
17. februar 2004 - 13:14 #2
Are you saying that you want a different password for each record? If so then I hop eyou dont have many records!

If you want it directly in the table WITHOUT having to enter data through a form then you MUST use the default value (standardværdi).

But why is this necessary?
Avatar billede overchord Nybegynder
17. februar 2004 - 13:18 #3
Du kan benytte Chr() og randomize tal i ASCII koder. Eftersom ascii-koder 1-26 er bogstaver kan du bruge:

Bogstav = chr( int(rnd()*26)))
Avatar billede overchord Nybegynder
17. februar 2004 - 13:21 #4
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

AntalBogstaver = 6 + int(Rnd()*6)

for i = 1 to Antalbogstaver

  PWD = PWD & chr(int(rnd()*26))

next i
Avatar billede myanimalfarm Nybegynder
17. februar 2004 - 13:25 #5
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.
Avatar billede hubs Nybegynder
17. februar 2004 - 13:25 #6
Kanon smart løsningsforslag overchord :c)

Som terry siger, så kunne jeg også godt tænke mig at vide hva det skal bruges til?
Avatar billede myanimalfarm Nybegynder
17. februar 2004 - 13:26 #7
overchord> hvor skriver jeg lige det ind?
Avatar billede steen_hansen Forsker
17. februar 2004 - 13:28 #8
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
%>
Avatar billede myanimalfarm Nybegynder
17. februar 2004 - 13:29 #9
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 :-)
Avatar billede steen_hansen Forsker
17. februar 2004 - 13:31 #10
Ø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
%>

<html>

<head>
<title></title>
</head>

<body>

[Dit script]

</body>

</html>
Avatar billede steen_hansen Forsker
17. februar 2004 - 13:32 #11
Sorry, så ikke lige, at det var i Access :o/
Avatar billede myanimalfarm Nybegynder
17. februar 2004 - 13:32 #12
jamen steen, det er ikke på en side, det er i access
Avatar billede myanimalfarm Nybegynder
17. februar 2004 - 13:32 #13
:-)
Avatar billede overchord Nybegynder
17. februar 2004 - 13:36 #14
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)
Avatar billede myanimalfarm Nybegynder
17. februar 2004 - 13:41 #15
overchord> *lol* undskyld, det er meget muligt at jeg er fatsvag men jeg forstår altså ikke hvordan jeg gør det i Access
Avatar billede myanimalfarm Nybegynder
17. februar 2004 - 13:45 #16
det skal både være for nye og gamle, men det er man vel nødt til at gøre på 2 forskellige måder eller?
Avatar billede overchord Nybegynder
17. februar 2004 - 13:50 #17
ok ja det er to forskellige metoder:

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)

end Sub

Haaber det giver lidt mere mening :-)
Avatar billede myanimalfarm Nybegynder
17. februar 2004 - 14:29 #18
ok! har faktisk aldrig arbejdet i moduler før men det vil jeg da lige prøve så :-)
Avatar billede overchord Nybegynder
17. februar 2004 - 14:31 #19
ok - skriv endeligt hvis du stoeder paa problemer
Avatar billede overchord Nybegynder
19. februar 2004 - 12:21 #20
virkede det?
Avatar billede myanimalfarm Nybegynder
19. februar 2004 - 12:52 #21
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! :-)
Avatar billede overchord Nybegynder
19. februar 2004 - 14:45 #22
k men skriv endeligt hvis der er problemer.
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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