webForumDet fria alternativet

Hur "felsäkert" är detta?

PHP

6 svar · 195 visningar · startad av davids

Medlem sedan mars 2001238 inlägg
Frågan#1

Hej!

På en sajt jag jobbar med har jag följande kod för att ge bland annat varje nyhet ett eget ID-nummer i databasen. Sen använder jag numret när en viss nyhet ska hämtas.

Koden:
srand((double)microtime()*1000000);
$id = rand(1,999999999999999);

Min fråga här är:
Hur stor risk är det att två nyheter får samma ID? Finns det någon risk eller är den obefintlig?

Tackar tackar!

//David

Medlem sedan aug. 2000238 inlägg
#2

När du har fått ut ett slumpast tal ($id) så kan du ju kolla om det redan är upptaget. Om det är det (mot förmodan) så gör ett nytt försök/kör om koden tills den hittar ett slumptal som inte är upptaget.

------------------
All Your Base Are Belong To Us

Medlem sedan apr. 2000642 inlägg
#3

varför inte använda ett auto increment-idfält?

------------------
PeterSign v 2.3.36

Medlem sedan juli 2000212 inlägg
#4

Förutom autoincrement kan du också använda dig av:

$mess_id = md5(uniqid("saltochpeppar"));

$mess_id kommer varje gång du exekverar denna satsen innehålla en 32-tecken lång sträng som alltid är olika. Bra att användas när man gör tex ecard functioner så att man inte bara kan gissa sig till ecard_id:t som man skulle kunna göra med autoincrement.

------------------
www.phpfunctions.com

Medlem sedan juni 20008 205 inlägg
#5

Öhm... är id-numret primärnyckel i db:n? Primärnycklar går det inte att ha dubletter av, hur gärna man än vill.

------------------
Life feeds on life feeds on life feeds on life feeds on life...

Medlem sedan mars 2001238 inlägg
#6

Tack så jättemycket för hjälpen :-)

//David

Medlem sedan sep. 2000438 inlägg
#7

varför inte köra en timestamp och sen en random grej.. då skall det ju rätt mycket till för att ngn skall posta på samma sekund och sen få fram samma slumptal...

275 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
142 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
141 ms — ändringar (db)