webForumDet fria alternativet

unikt teckenkombination

Databaser & SQLur Databashanterare & SQL

11 svar · 452 visningar · startad av DavidB

Medlem sedan jan. 20001 372 inlägg
Frågan#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?

Medlem sedan juni 200032 967 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

Medlem 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?

Medlem sedan juni 200032 967 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,

Medlem 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.

Medlem sedan sep. 20025 506 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...

Medlem 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.

Medlem 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());
Medlem sedan jan. 20001 372 inlägg
#9

använder asp.net

Medlem sedan mars 20032 667 inlägg
#10

DavidB skrev:

använder asp.net

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

Medlem 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?

Medlem sedan jan. 20001 372 inlägg
#12

tackar, får ta och testa

135 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
133 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)