Ceneration d'un code de 14 chiffres

siji Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   -  
 claudia -
salut
je veux un script en php qui consiste a generer un code de 14 chiffres avec une probabilite nulle qu'un code apparait pour une deuxieme fois
merci
A voir également:

16 réponses

sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
Si si, tu peux générer un GUID.

Par exemple sous Windows il y a ça en standard dans le système.


Exemple en VBScript (.vbs):

guid = left(createobject("scriptlet.typelib").guid,38) 
msgbox guid



Je présume qu'en php ça doit exister...
7
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
10^14 ! moi je trouve ça énorme.
il y a 10^10 habitant sur terre (enfin, en puissance de 10 sup)
ça fait donc 10 000 (10^4) code possible par habitant.
Je voi pas ce qu'on peut faire qui necessite autant de nombres différents !
4
blux Messages postés 27129 Date d'inscription   Statut Modérateur Dernière intervention   3 361
 
Euh, on est plutôt 6 milliards, soit 6x10^9, tu en rajoutes 30%, non !

Demande à Sevran comment faire ! ;->

ça fait donc 10 000 (10^4) code possible par habitant.
Qui a dit qu'on voulait les distribuer aux habitants ?
T'es victime du syndrome IPv4 ? :-)

Le problème est plutôt de générer une clé qu'on ne retrouvera pas, genre "rechargement d'un compte mobile"...
0
dipitch
 
oè sa parait énorme mais ce que je me demande aujourd'hui c'est de savoir à quel point c'est fiable. est ce qu'on peut d&terminer la probabilité de fraude ????
0
kij_82 Messages postés 4089 Date d'inscription   Statut Contributeur Dernière intervention   857
 
ici c'est pas un fast food, tu commande pas et t'es pas servi !
2
blux Messages postés 27129 Date d'inscription   Statut Modérateur Dernière intervention   3 361
 
probabilite nulle qu'un code apparait pour une deuxieme fois
Impossible, à moins d'enregistrer les codes déjà générés....
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
Tiens ben y'a pas à chercher bien loin:
https://www.php.net/uniqid

Je conseille quand même d'utiliser la méthode recommandée là:
https://www.php.net/manual/fr/function.uniqid.php#65879

qui est bien meilleure (générateur Mersenne Twister).

1
slooptoo
 
tu ne décris pas assez le besoin
la réponse pourrait tout aussi bien être une séquence en BDD...
pourquoi 14 digits au fait ?
1
siji Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   2
 
merci tout dabord pour la reponse
cest un chiffre simple compose de 14 nombres
si vous voulez plus dinfos c'est comme les codes des cartes de recharge
0
sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
14 chiffres ?

Sous Windows, un GUID fait 128 bits (soit un nombre entre 0 et 340282366920938463463374607431768211455), ce qui est déjà très juste.
Je ne recommande déjà pas d'utiliser moins de 128 bits, alors avec 14 chiffres, c'est peine perdue: Tu aura un grand nombre de collisions (numéros identiques). C'est sûr.
1
siji Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   2
 
les 14 chiffres sont sous forme d'une chaine de caracters
1
sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
mmm... donc si on prend a-z A-Z 0-9, ça donne

(26*2+10)^14 possibilités différentes, soit 12401769434657526912139264.
C'est déjà mieux.

Pour un code d'activation, ça peut suffire.

Pour une identifiant généré, je trouve cela insuffisant.
1
blux Messages postés 27129 Date d'inscription   Statut Modérateur Dernière intervention   3 361
 
10 chiffres de 0 à 9, sur 14 positions, ça fait 10^14...

Vraiment pas beaucoup, et pas beaucoup de garantie d'unicité, surtout s'ils doivent être aléatoires...
1
sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
Je voi pas ce qu'on peut faire qui necessite autant de nombres différents !

Si tu choisi des billes dans un sac en remettant à chaque fois les billes dedans, tu aura des risques de retomber sur les mêmes billes.

Et il y a la loi de "Bill Gates": "640 ko sera bien suffisant pour tout le monde." :o)

Je connais aussi des auteurs de logiciels qui se disaient: Pas besoin d'un compteur plus grand. De toute façon d'ici l'an 2000 ce logiciel aura été remplacé par un autre.
1
siji Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   2
 
non tu ma pa compri c'est une chaine composee de 14 caracters est qui sont tous des chiffres de 0 a 1
le program doi generer a chaque foi une chaine differente des autres precedentes ok ?
1
sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
ok.
Donc 100 000 000 000 000 possibilités différentes.

ça paraît énorme, mais c'est pas si grand que ça.


Comme je l'ai dit, pour un code d'activation, ok (associé à un identifiant).

Comme identifiant, tu aura des problèmes.
1
sebsauvage Messages postés 32893 Date d'inscription   Statut Modérateur Dernière intervention   15 662
 
Je trouve ça tordu

ça peut être utile dans un cas: quand il n'y a pas de système centralisé qui créé les ID.

Mais bon dans la majorité de cas, un serveur SQL fait parfaitement l'affaire, en effet.
1
claudia
 
tes pas la seule moi je connais pas tu peux me le dire silteplai je ferai tous se que tu veux tu me donne le code je te donne mon numero ok ca marche merci
1
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
mathématiquement, pour avoir une probabilité nulle, il suffit de retenir chaque code distribué, ou alors de les distribuer dans l'ordre. C'est d'ailleur cette colution qui est la meilleur à mon avis. Le ID ICQ semblent être distribué comme ça par exemple.
Je trouve ça tordu comme façon de raisonner de se dire " on n'a qu'a prendre 10^300 chiffres différent, comme ça on a pas trop de chance d'en distribuer deux pareils sur 10 personnes"
0