FAQ |
Kalender |
![]() |
#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 |
||
![]() |
![]() |
![]() |
#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
|
||
![]() |
![]() |
![]() |
#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?
|
||
![]() |
![]() |
![]() |
#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. |
||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Nykomling
|
Lägg in ett extra idfält för unika icke-sekventiella id.
Eller slopa det sekventiella, använd inte auto increment. |
||
![]() |
![]() |
![]() |
#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. |
||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Nykomling
|
Citat:
upprepa insert med ett slumpid tills den tar emot det, tex: insert into tabell (ID,...) values (floor(1+(rand()*999999)),...) |
||
![]() |
![]() |
![]() |
#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 |
||
![]() |
![]() |
![]() |
#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:
|
|||
![]() |
![]() |
![]() |
#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 |
|
|