webForumDet fria alternativet

unikt teckenkombination

11 svar · 452 visningar · startad av DavidB

DavidBMedlem sedan jan. 20001 372 inlägg
#1

undrar om det på nåt sätt går att få en unik teckenkombination i mySQL likt {99C910A5-5962-4C3A-A22A-7E3838EA876B} i Access och SQL Server?

@ndersMedlem sedan juni 200032 969 inlägg
#2

Vad ska du ha det till? Men, nej, det finns inte replikerings-ID i MySQL (om de inte nyligen lagt till det vill säga, det vet jag inte).

Mvh

DavidBMedlem sedan jan. 20001 372 inlägg
#3

Ska ha det för validering ar epostadresser :)

Om nån registrerar sig på min sida så har jag det så att jag skickar ett mail med en länk som denna måste klicka på för att "aktivera sitt konto".
För tillfället ser länken ut ungefär såhär:
http://www.url.se/aktivera.aspx?id=10

Problemet med detta är ju att det inte är några som helst problem att fuska. Men jag tänkte att jag kunde ha ett fält till i databasen som heter typ Aktivera som replikerings-ID't skulle ligga i och då hade dte inte gått att fuska.

Men jag får på något annat sätt då, ingen som har något förslag?

@ndersMedlem sedan juni 200032 969 inlägg
#4

Skapa ett varcharfält i tabellen, och slumpa fram en teckenkombination själv, är mitt generella tips i liknande frågeställningar.

Mvh,

DavidBMedlem sedan jan. 20001 372 inlägg
#5

jo, men finns det inte en liten risk att det slumpas samma för två användare då? och i så fall blir allting helt fel.

Men man kan i och försig slumpa fram nånting + att man använder userId't lite dolt i strängen.

Mr. N.Medlem sedan sep. 20025 507 inlägg
#6

Eller så slumpar man och så kollar man "finns det redan? nehej, då kör vi" eller "finns det redan? ojdå, då slumpar vi igen". Blir kanske lite slött...

aasahMedlem sedan mars 20034 471 inlägg
#7

Sen kan man ju fundera över sannolikheten att få samma. Säg att ditt lösen bara består av siffror ==> 10 "tecken", a-z ==> 26 "tecken", kombination ==> minst 36 "tecken", alla möjliga chars ==> 255. Bestäm dig. Kalla T för antalet tecken enligt ovan.
Sannolikheten att du råkar få samma sträng på n tecken långt lösen är:
antalet redan framslumpade strängar/T^n.
Sätt dig ner med en miniräkanre så inser du nog fort att denna sannolikhet kan göras försumbar, det är ju bara att ta ett stort n. Tänk dock på att ge ett nytt frö till slumptalsgeneratorn varje gång, bra idé är att använda systemklockan för att få fröet ==> garanterat olika start varje gång.

K@llenMedlem sedan mars 20032 667 inlägg
#8

Om du använder php kan du ju göra så här:

   $regnumber = crc32($userName.$email.microtime());
DavidBMedlem sedan jan. 20001 372 inlägg
#9

använder asp.net

K@llenMedlem sedan mars 20032 667 inlägg
#10

DavidB skrev:

använder asp.net

Då kan jag förstå att livet är besvärligt. §jr

PMedlem sedan jan. 20012 204 inlägg
#11
    Public Shared Function GeneratePassword() As String
        Dim password As String = ""
        Dim passchar As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"
        Dim ranbuff(50) As [Byte]
        Dim rng As System.Security.Cryptography.RandomNumberGenerator = System.Security.Cryptography.RandomNumberGenerator.Create()
        rng.GetBytes(ranbuff)

        Dim iLen As Integer = ranbuff(0) Mod 4 + 8 ' random length 8 to 12 chars 
        Dim iIndex As Integer
        For iIndex = 1 To iLen
            Dim bNum As Integer = CInt(ranbuff((iIndex + 1)))
            bNum = bNum Mod passchar.Length
            password += passchar.Substring(bNum, 1)
        Next iIndex
        Return password
    End Function

kanske?

DavidBMedlem sedan jan. 20001 372 inlägg
#12

tackar, får ta och testa

137 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)