Jak udelat nahodny unikatni variabilni symbol – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Jak udelat nahodny unikatni variabilni symbol – PHP – Fórum – Programujte.comJak udelat nahodny unikatni variabilni symbol – PHP – Fórum – Programujte.com

 

cheeester0
Stálý člen
27. 2. 2008   #1
-
0
-

ahoj, chci se zeptat jakym způsobem se dá řešit generování variabilního symbolu. Musí mit 10 znaku a pouze cela kladna cisla. A musi byt samozdrejme unikatni.

myslel jsem ze to vyresim

$symbol = uniqid ();


ale to tam jsou i pismena a to nejde.

Nahlásit jako SPAM
IP: 88.146.189.–
byF0
Návštěvník
27. 2. 2008   #2
-
0
-

To cheeester : Variabilní symbol čeho?

Když budeš uvažovat čísla 0-9 a výsledný symbol má mít 10 cifer, potom máš 10^10 = 10 000 000 000 variací (s opakováním:)

Otázka je, zda-li je pro Tebe validní i symbol 0000000001... to bych chtělo upřesnit.

Každopádně, není nic snažšího, než použít nějaké php fce pro generování náhodných čísel (rand, srand, mt_rand). Výsledný algoritmus spojování do řetězce už Ti přenechám.

A pokud by Ti nestačilo 10 mld. možností... Pak můžeš například přidat další cifru :)

Nahlásit jako SPAM
IP: 90.176.137.–
tom*p0
Stálý člen
27. 2. 2008   #3
-
0
-

Stačí for cyklus a náhodné generování, něco takového:

$PocetCislic = 10;

$Symbol = "";
for ($i = 1; $i <= $PocetCislic; $i++)
$Symbol .= rand(0,9);

(nezkoušel jsem to, píšu to z hlavy, ale mělo by to fungovat)

Nahlásit jako SPAM
IP: 217.115.246.–
Don't waste your time, or time will waste you.
stepan0
Newbie
27. 2. 2008   #4
-
0
-

Na generování pomocí funkce se nespoléhejte. Protože tu existuje stále pravděpodobnost, že se číslo bude opakovat. Zároveň zákazníkovi nebo administrativní pracovnici, která bude objednávku (nebo cokoliv jiného) zpracovávat, usnadní orientaci nějaký "smysluplný pattern". Do variabilního symbolu můžete zařadit např. datum + číslo objednávky (zákazníka). Náhodná VS je cesta do pekel :-)

Nahlásit jako SPAM
IP: 85.71.61.–
cheeester0
Stálý člen
27. 2. 2008   #5
-
0
-

To stepan :

To máš pravdu že by to mělo asi dávat nějaký určity smysl.

tak jsem tedy zvolil datum bez roku + cislo objednavy.



echo 'Variabilni symbol: '.date('md').''.$objednavka;


Výsledek: Variabilní symbol: 0227537

Nahlásit jako SPAM
IP: 88.146.189.–
byF0
Návštěvník
28. 2. 2008   #6
-
0
-

To stepan : Předem říkám, že souhlasím s vhodným vzorem pro variabilní symbol. Já osobně používám vzor v kombinaci s dodatečným náhodně generovaným "salt"em, v případech, kdy je to možné. Přesto:

Pravděpodobnost, že se trefí, je 1 ku 10 miliardám. V případě pseudogenerátorů se jistojistě pravděpodobnost o něco zvětší, ale stále se budeme pohybovat hluboko za desetinou čárkou. Potom už je ale minimální problém, zejména při ukládání do db, postarat se o zjištění chyby primárního klíče a napravit chybu. Pravděpodobnost, že vygenerujeme stejné číslo i podruhé, se už bude limitně blížit nule. A při použití opravdu dobrého algoritmu...

Například v práci jsem nedávno musel generovat náhodný písmenný kód, který opravdu musel být náhodný a přitom unikátní (směrnice zákazníka). Zkrátka musí se ošetřit všechno.

Nahlásit jako SPAM
IP: 85.207.69.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 37 hostů

Podobná vlákna

Jak to udělat — založil Dave

Jak udělat podmenu — založil PoklickaPan

Jak udělat aplikaci? — založil Jakub

Jak udělat hodiny — založil frontm4n

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý