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?
unikt teckenkombination
11 svar · 452 visningar · startad av DavidB
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
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?
Skapa ett varcharfält i tabellen, och slumpa fram en teckenkombination själv, är mitt generella tips i liknande frågeställningar.
Mvh,
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.
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...
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.
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?
tackar, får ta och testa