Pereiti prie turinio

Rekomenduojami pranešimai

Nu tai kaip man patikrint ar nėra? jeigu yra tarkim

 

random( 10000 );

 

Ir tarkime turiu skaičius 5 ir 15 gali būt ir daugiau aišku, kad random darant jie niekada neiškristų?

Tu juk tuos užsakymo numerius kažkur saugosi, taip? Sugeneruoji naują numerį, duombazėje tikrini, ar yra toks įrašas. Jeigu įrašas yra, iškvieti vėl funkciją, kuri generuoja numerį ir vėl tikrini, ar yra toks numeris. Jeigu numeris neegzistuoja db, tai viskas ok ir jis yra unikalus.

 

Gali dar duomenų bazėje ant laukelio uždėti požymį UNIQUE.

 

P.S. Nors šitas budas nėra geras, geriau sukurti kokį vieną kodą. pvz. 1000001 ir pridedinėti 1 prie paskutinio numerio iš duombazės.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Rimtai siūlote rodyti vartotojams auto-increment skaičių?..

Čia yra keli įmanomi sprendimai http://stackoverflow.com/questions/1179439/best-way-to-generate-order-numbers-for-an-online-store

O kuom tai blogai? Aišku prasmės irgi neturėtu toks skaičius kaip ir random, bet norisi sužinoti kuom techniškai tai blogai? Normalus klausimas, gal ko nežinau, gal čia kokia saugumo spraga gali būti?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Čia kelios priežastys kodėl tai yra blogai, pagooglinus galima surasti daugiau priežasčių ir istorijų, kaip dėl to nukentėjo kompanijos https://www.quora.com/Is-exposing-database-auto-increment-id-considered-a-bad-practice

Šiaip labai didelės saugomo spragos nėra, vien to neužteks, kad padarytų rimtos žalos sistemai. Labiau atskleidžiama informacija, kurios manau, kad nereikėtų atskleisti. Tačiau, jei yra atrandama kokia nors saugumo spraga, tai šis dalykas gali padėti padaryti daug daugiau žalos, nei tuo atveju, jei būtų naudojami atsitiktinai atrodantys skaičiai. Pavyzdžiui, labai lengva pasirašyti programą, kuri eitų per visus puslapius, kurie identifikuojami pagal auto-increment ID ir kiekviename puslapyje kažką padaryti arba išgauti tam tikrą informaciją.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Rimtai siūlote rodyti vartotojams auto-increment skaičių?..

Čia yra keli įmanomi sprendimai http://stackoverflow.com/questions/1179439/best-way-to-generate-order-numbers-for-an-online-store

 

nebūtina kaip užsakymo numerį rodyti id su auto incrementu (net gi pasakyčiau nepageidautina), geriau turėti atskirą laukelį užsakymo numeriui ir daryti programiškai auto incrementą.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Be jau pasiūlytų variantų, gali susigeneruoti seką iš eilės einančių skaičių, o tada juos sumaišyti:

{1, 2, 3, 4, 5} -> {3, 2, 5, 4, 1}

Tada imi skaičius iš antros sekos paeiliui ir naudoji kaip ID:

Pirmas užsakymas: 3
Antras:           2
Trečias:          5
...

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...