Ceneration d'un code de 14 chiffres

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
Configuration: Windows XP
Internet Explorer 6.0

16 réponses

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    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...
    1. Contributeur
      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 !
      1. Modérateur
        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"...
      2. 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 ????
    2. Contributeur
      ici c'est pas un fast food, tu commande pas et t'es pas servi !
      1. Modérateur
        probabilite nulle qu'un code apparait pour une deuxieme fois
        Impossible, à moins d'enregistrer les codes déjà générés....
        1. 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. 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
        2. Modérateur
          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. Modérateur
            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. Modérateur
              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. Modérateur
                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. 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. Modérateur
                    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. Modérateur
                      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. 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. Contributeur
                          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"