WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Få löpnummer att verka slumpmässiga (https://www.wn.se/forum/showthread.php?t=1048543)

qson 2011-06-06 18:29

Chiffer verkar trevligt. Det är nog vad jag söker.
Om jag konstant använder samma chiffer med löpnummer är jag väl garanterad att aldrig få två lika resultat (som man kan få med hashar).

Spåna gärna vidare! Det är mycket intressant!

klein 2011-06-06 20:50

I några webshoppar som jag skrev för några år sedan, så körde jag med tidsnummer. Typ datum och tid.. Man kan köra UNIX Time stamp också, som räknar antalet sekunder sedan 1970 och sedan köra med annan bas. Har gjort i de någon SEO projekt, där använt basen 36 istället för 10, på sätt få ner storleken på strängarna.


Citat:

Ursprungligen postat av qson (Inlägg 20407578)
Håller på med ett bokningssystem och försöker komma fram till ett säkert sätt att generera unika bokningsnummer från två fristående system.
Jag vill använda något liknande auto increment men med en extra siffra som identifierar vilket system som skapat bokningen. Jag vill dock att dessa sekventiella (inkrementella) nummer att verka slumpmässiga, men jag vill fortfarande hålla nere längden på numren så mycket som möjligt.

Just nu har jag följande kod för att skapa unika nummer:
PHP-kod:

$luid 301// Local unique id, auto_increment
$cuid 1// client/system id
$checksum $luid 8// % skall vara ett procenttecken, alltså modulo 
$prefix = ($cuid $checksum) + 1;

$id $prefix $luid

301 => 5301
302 => 8302
303 => 7303

Villfå dessa tal att "verka" mer slumpmässiga. Nu kan man ju följa nummerserien om man skippar första siffran.
Dock vill jag ha kvar möjligheten att kunna få fram CUID ur numret, vilket jag kan nu genom följande formel:
PHP-kod:

$cuid intval( (substr($id01))-1) ^ (intval(substr($id1)) % 8




Alla tider är GMT +2. Klockan är nu 05:13.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson