FAQ |
Kalender |
2011-06-06, 00:24 | #1 | ||
|
|||
Mycket flitig postare
|
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:
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:
Senast redigerad av qson den 2011-06-06 klockan 00:40 |
||
Svara med citat |
2011-06-06, 00:53 | #2 | ||
|
|||
Medlem
|
Mcrypt är det vanliga i php, kommer dock inte native. Annars kan du använda base64_encode men om grundproblemet anses som en säkerhetsrik så bör du absolut titta på Mcrypt. Har du testa att google typ, php decryption script
|
||
Svara med citat |
2011-06-06, 08:41 | #3 | ||
|
|||
Klarade millennium-buggen
|
Är det viktigt för dig att man inte ska kunna följa nummerserier så låter det som att en hashad sträng är rätt för dig. då får du ha en översättningstabell mellan hashen och det ursrpungliga ID hos respektive bokningsbolag. Men du kanske inte har eller vill sätta upp en sådan tabell?
|
||
Svara med citat |
2011-06-06, 09:37 | #4 | ||
|
|||
Mycket flitig postare
|
Jag ser detta absolut inte som "säkerhetsrisk". Det är bara skönhetsgrejer.
base64 ger även bokstäver vilket jag inte vill ha, och dessutom +30% mer data (=längre bokningsnummer) mcrypt har jag inte tänkt på, men misstänker att även det det ger längre bokningsnummer. Skall göra ett test med mcrypt och se vad jag får för resultat. |
||
Svara med citat |
2011-06-06, 14:35 | #5 | ||
|
|||
Nykomling
|
Lägg in ett extra idfält för unika icke-sekventiella id.
Eller slopa det sekventiella, använd inte auto increment. |
||
Svara med citat |
2011-06-06, 15:30 | #6 | ||
|
|||
Mycket flitig postare
|
Så har jag nu, ett auto_increment-fält och ett "unikt id"-fält som baseras på auto_increment-värdet som jag visade i tidigare post.
Dock vill jag fortfarande hålla bokningsnumrena så korta som möjligt, därför har jag använt auto_increment med ovanstående omräkning. Om man skall slopa det sekventiella och bara köra slumpmässiga så behöver numret vara ganska långt för att garantera att det är unikt. |
||
Svara med citat |
2011-06-06, 16:04 | #7 | ||
|
|||
Nykomling
|
Citat:
upprepa insert med ett slumpid tills den tar emot det, tex: insert into tabell (ID,...) values (floor(1+(rand()*999999)),...) |
||
Svara med citat |
2011-06-06, 16:11 | #8 | ||
|
|||
Supermoderator
|
OCR-nummer för bankgiro och plusgiro innehåller ofatst två siffror, en för längden och en som är checksiffra. Något sådant kanske?
__________________
Jonny Zetterström se.linkedin.com/in/jonnyz | bjz.se | sajthotellet.com | kalsongkungen.se | zretail.se | zetterstromnetworks.se | webbhotellsguide.se | ekonominyheter24.se | nyamobiltelefoner.se | gapskratt.se | antivirusguiden.se | jonny.nu |
||
Svara med citat |
2011-06-06, 16:42 | #9 | |||
|
||||
Bara ett inlägg till!
|
Ska de verka slumpmässiga men ändå bära med sig all nödvändig information kan du använda ett enkelt chiffer. Så här kan man göra i PHP:
PHP-kod:
|
|||
Svara med citat |
2011-06-06, 16:53 | #10 | ||
|
|||
Klarade millennium-buggen
|
Citat:
Kod:
insert into tabell (ID,...) values (floor(5000+(rand()*999)),...) Kod:
insert into tabell (ID,...) values (floor(6000+(rand()*999)),...) Kod:
insert into tabell (ID,...) values (floor(7000+(rand()*999)),...) |
||
Svara med citat |
Svara |
|
|