Avatar billede hansen Nybegynder
23. februar 2008 - 08:34 Der er 9 kommentarer og
1 løsning

Generer en licensnøgle

Hej, jeg har brug for lidt hjælp med en lille funktion.

Jeg vil gerne have genereret en licensnøgle i denne form,

dfgh-1236-54hg-458f-ed45

fem sæt tal/bogstaver adskilt af en bindestreg for hvert fjerde tegn.


Kan du hjælpe mig med dette?

Tak.
Avatar billede jansangill Nybegynder
23. februar 2008 - 11:41 #1
keyss = "abcdefghijklmnopqrstuvwxyz0123456789"
Randomize
For i = 1 to 20
  keys = keys & mid(keyss,round(rnd*35)+1,1)
Next

counter = 1
Do while counter < Len(keys)
    udskriv=udskriv&Mid(keys, counter, 4) & "-"
counter = counter + 4
Loop

udskriv=Left(udskriv,Len(udskriv)-1)

response.write udskriv


Kunne være en løsning
Avatar billede w13 Novice
23. februar 2008 - 11:44 #2
Følgende gør det:
---------------------------------
<%Randomize()
aChars="a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,w,v,x,y,z,0,1,2,3,4,5,6,7,8,9"
aChars=Split(aChars,",")
iLength=20
For i=1 To iLength
    sKey=sKey&aChars(Int(Rnd()*UBound(aChars))+1)
    If Len(i/4)=1 And i<iLength Then sKey=sKey&"-"
Next
Response.Write sKey%>
Avatar billede w13 Novice
23. februar 2008 - 11:46 #3
Men det kan selvfølgelig også gøres mere kompakt:
-------------------------------------------------
<%Randomize()
sChars="a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,w,v,x,y,z,0,1,2,3,4,5,6,7,8,9"
For i=1 To 20
    sKey=sKey&Mid(sChars,Int(Rnd()*Len(sChars))+1,1)
    If Len(i/4)=1 And i<20 Then sKey=sKey&"-"
Next
Response.Write sKey%>
Avatar billede jansangill Nybegynder
23. februar 2008 - 11:46 #4
men w13's løsning er dog kortere, så tag du den:)
Avatar billede w13 Novice
23. februar 2008 - 12:25 #5
Hov, den sidste skulle så være:
-------------------------------
<%Randomize()
sChars="abcdefghijklmnopqrstuwvxyz0123456789"
For i=1 To 20
    sKey=sKey&Mid(sChars,Int(Rnd()*Len(sChars)),1)
    If Len(i/4)=1 And i<20 Then sKey=sKey&"-"
Next
Response.Write sKey%>
Avatar billede hansen Nybegynder
23. februar 2008 - 19:35 #6
Hej w13, somme tider giver din løsning denne fejl ved reload,

Microsoft VBScript runtime error '800a0005'
Invalid procedure call or argument: 'Mid'
/key.asp, line 4

Kan du se hvad der går galt, tak.
Avatar billede w13 Novice
23. februar 2008 - 20:12 #7
Jeg tror bare, det skal være følgende så:

<%Randomize()
sChars="a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,w,v,x,y,z,0,1,2,3,4,5,6,7,8,9"
For i=1 To 20
    sKey=sKey&Mid(sChars,Int(Rnd()*Len(sChars)),1)
    If Len(i/4)=1 And i<20 Then sKey=sKey&"-"
Next
Response.Write sKey%>

Det fylder også to tegn mindre. =)
Avatar billede nielle Nybegynder
23. februar 2008 - 20:56 #8
En licensnøgle plejer normalt at have en indbygget mekanisme sådan at programmet kan tjekke om det er en lovlig nøgle, eller om det blot er en række tilfældige tal og bogstaver som er blevet indtastet. Jeg synes ikke rigtig at nogen af de foreløbige løsninger tager højde for det.
Avatar billede w13 Novice
23. februar 2008 - 21:35 #9
Og det skulle være uden kommaer:
--------------------------------
<%Randomize()
sChars="abcdefghijklmnopqrstuwvxyz0123456789"
For i=1 To 20
    sKey=sKey&Mid(sChars,Int(Rnd()*Len(sChars)),1)
    If Len(i/4)=1 And i<20 Then sKey=sKey&"-"
Next
Response.Write sKey%>
--------------------------------
Nielle>> Jeg går da ud fra, at denne licensnøgle gemmes i databasen, så når den indtastes af brugeren, kan den slåes op deri og bekræftes.
Avatar billede hansen Nybegynder
26. februar 2008 - 22:47 #10
Hej Nielle, det var ikke tanken der skulle genereres en licensnøgle ud fra navn, email osv, jeg har blot brug for en lille funktion der kunne generere en række tilfældige tal og tegn som en licensnøgle.

Herefter bliver der slået op i en tabel og tjekket for dubletter.

Tak for hjælpen
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