webForumDet fria alternativet

Generera ny kod!

ASP

7 svar · 319 visningar · startad av Fredde Mannen

Medlem sedan nov. 20014 054 inlägg
Frågan#1

Jag har min kodgenerator:

Function UnlockCode()
Length = 8
Options = "0 1 2 3 4 5 6 7 8 9"
arrValues = split(Options," ")
randomize timer
i = 1
For i = i to Length
UnlockCode = UnlockCode & CInt(arrValues(rnd*10))
Next
End function

den skall generera en åttasiffrig upplåsningskod som sedan läggs in i en databas. Hur skall jag göra för att kolla om den först finns i databasen, och om den finns generera en ny osv tills den har genererat en som inte finns, som den då lägger in!

:q

några tips? :e

Medlem sedan mars 20032 667 inlägg
#2

Om det finns möjlighet kan du använda ett användarid eller dylikt för att få koden unik, ex:

<användarid>-<slumpad kod>

detta skulle kunna bli 543-27653924

på så vis slipper du kolla om den är unik, under förutsättning att användarid är unikt.

Medlem sedan nov. 20014 054 inlägg
#3

K@llen skrev:

Om det finns möjlighet kan du använda ett användarid eller dylikt för att få koden unik, ex:

<användarid>-<slumpad kod>

detta skulle kunna bli 543-27653924

på så vis slipper du kolla om den är unik, under förutsättning att användarid är unikt.

ingen tokig idé, ingen tokig idé.. det underlättar juh en hel del! :e

Men kom på en grej.. detta gör en sak komplicerad.. eftersom upplåsningskoden endast skall bestå av 8 siffror så blir det kruxigt när användare 10 reggas, och detta blir ännu värre när användare 100 reggas osv. därför skulle jag mer uppskatta om jag på något sätt kunde kolla fört om koden finns, och finns den tas en ny fram osv...

Medlem sedan mars 20032 667 inlägg
#4

Alltså den kollen är ju inga problem egentligen. Även om det är mindre troligt börjar man kanske tröttna när scriptet testat runt lite.

sql = "SELECT COUNT(*) FROM tabellen WHERE unlockCode = " & unlockCode 

set rs = connect.execute(sql)

if rs(0) > 0 then
    ' ladda om sidan och slumpa fram ett nytt
else
    ' skicka in koden i databasen
end if

Problemet är ju omladdning av sidan efter varje försök.

Medlem sedan nov. 20014 054 inlägg
#5

Så långt hade jag också kommit... ;) just det där fram tills att ladda om sidan.. väl i sig kanske jag kan stoppa in den övriga informationen i sessioner, då skall nog inte det vara några större problem förhoppningsvis! :e

Ah ja... jag rapporterar när jag fixat till det! ;)

Medlem sedan mars 20032 667 inlägg
#6

Varför måste koden vara unik?

Kan du inte validera koden tillsammans med någon annan användaruppgift, dvs att användaren ska ange två uppgifter?

Medlem sedan nov. 20014 054 inlägg
#7

K@llen skrev:

Varför måste koden vara unik?

Kan du inte validera koden tillsammans med någon annan användaruppgift, dvs att användaren ska ange två uppgifter?

Ja visst kan jag göra de.. men jag tycker om att vara omständig! ;) Nåja kan juh i sig plotta lite med ena filen så är det fixat! :)

Medlem sedan jan. 20032 285 inlägg
#8

Du behöver ju egentligen inte ladda om sidan efter varje slumpning. Du skulle ju kunna lägga in det i en loop, ungefär såhär:

Do Until blnOk
  intKod = UnlockCode()
  strSQL = "SELECT kod FROM tabell WHERE kod = " & intKod
  Set objRS = objConn.Execute(strSQL)

  If objRS.EOF Then blnOk = True

  objRS.Close : Set objRS = Nothing
Loop

'Lägg till intKod i databasen.
267 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)