Codes generieren und validieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    gehen tun tät's schon, aber es ist aufwendiger
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #17
      Ja, aber im endeffekt leichter für micH =) (Net immer codes reinhaun usw usw usw ) ;D Und die db muss nicht so leiden ^-^

      Hättest du eine idee, wie ich das da rausbekomme!?

      Habe reguläre ausdrücke momentan nua für email usw benutzt aber noch nie für sowas Oo

      //edit

      Okay ein Bisschen hab ich ja schon zum überprüfen ob zumindestens nur Zahlen und Buchstaben sind und - vorhanden sind und ob jedes nur 4 Ziffern sind ^-^

      PHP-Code:
      <?php
      $code 
      "KSDF-8S6T-R34R-FC4G";
      $code2 preg_match("/^([A-Z0-9]{4})-([A-Z0-9]{4}+)-([A-Z0-9]{4}+)-([A-Z0-9]{4})$/si"$code);

      echo 
      $code2;
      ?>
      Zuletzt geändert von MasterRed; 24.12.2004, 12:33.

      Kommentar


      • #18
        die sicherheit hängt dann aber davon ab, dass niemand den algorithmus in die finger bekommt

        ein möglicher ansatz wäre (is ja schließlich weihnachtszeit):
        PHP-Code:
        define('CONST_a'94); define('CONST_b'9); define('CONST_c'67); 
        define('CONST_d'88); define('CONST_e'79); define('CONST_f'12); 
        define('CONST_g'19); define('CONST_h'73); define('CONST_i'60); 
        define('CONST_j'68); define('CONST_k'47); define('CONST_l'39); 
        define('CONST_m'90); define('CONST_n'101); define('CONST_o'111); 
        define('CONST_p'55); define('CONST_q'72); define('CONST_r'14); 
        define('CONST_s'122); define('CONST_t'95); define('CONST_u'98); 
        define('CONST_v'20); define('CONST_w'125); define('CONST_x'23); 
        define('CONST_y'110); define('CONST_z'87); define('CONST_A'26); 
        define('CONST_B'72); define('CONST_C'33); define('CONST_D'35); 
        define('CONST_E'105); define('CONST_F'117); define('CONST_G'42); 
        define('CONST_H'112); define('CONST_I'33); define('CONST_J'71); 
        define('CONST_K'90); define('CONST_L'123); define('CONST_M'119);
        define('CONST_N'85); define('CONST_O'81); define('CONST_P'84); 
        define('CONST_Q'18); define('CONST_R'77); define('CONST_S'76); 
        define('CONST_T'57); define('CONST_U'12); define('CONST_V'116); 
        define('CONST_W'86); define('CONST_X'50); define('CONST_Y'82); 
        define('CONST_Z'128); define('CONST_0'22); define('CONST_1'14); 
        define('CONST_2'20); define('CONST_3'124); define('CONST_4'17); 
        define('CONST_5'89); define('CONST_6'113); define('CONST_7'22); 
        define('CONST_8'64); define('CONST_9'69);
        define('VALUES''abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789');

        function 
        generate_code($blocks 4) {
            
        $block '____-';
            
        $result substr(str_repeat($block$blocks), 0, -1);
            
        $length $blocks;
            
        $values VALUES;
            for (
        $i 0$i $length$i++)
                if ((
        $i 1) % 5)
                    
        $result{$i} = $values{mt_rand(0strlen(VALUES) - 1)};
            
        $result explode('-'$result);
            
        $consts get_defined_constants();
            
        $overall 0;
            foreach (
        $result as $key => $r) {
                
        $check $consts['CONST_'.$r{0}];
                
        $check *= $consts['CONST_'.$r{1}];
                
        $check += $consts['CONST_'.$r{2}];
                
        $r{3} = $check 10;
                
        $overall += $check $r{3};
                
        $r .= $values{mt_rand(0strlen(VALUES) - 1)};
                
        $result[$key] = $r;
            }
            return 
        implode('-'$result).($overall 10);
        }

        function 
        valid($code) {
            
        $parts explode('-'$code);
            
        $consts get_defined_constants();
            
        $overall 0;
            foreach(
        $parts as $part) {
                
        $check $consts['CONST_'.$part{0}];
                
        $check *= $consts['CONST_'.$part{1}];
                
        $check += $consts['CONST_'.$part{2}];
                
        $overall += $check + ($check 10);
                if (
        $part{3} != $check 10)
                    return 
        false;
            }
            return ((
        $overall 10) == $code{strlen($code) - 1});
        }

        $values VALUES;    
        for(
        $i 2$i 8$i++) {
            
        $code generate_code($i);
            echo 
        $code.': '.(int)valid($code);
            echo 
        '<br />';

        hat unter garantie noch haufenweise optimierungspotential injeder hinsicht (geschwindigkeit, sicherheit, ...) aber als kleiner denkanstoß isses bestimmt brauchbar

        Es werden x Blöcke mit je 5 Zeichen genereriert. Das vierte Zeichen ist die Prüfsumme der 3 vorhergehenden, das 5 Zeichen hat keinerlei Bedeutung, mit Ausnahme des letzten zeichens: Das ist die Prüfsumme über alle Blöcke
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #19
          Dankeeeeeeeeeeeeeeeeeeeschöööööööööööööön

          Achso bevor ich es vergesse Frohe Weihnachten und einen schönen Rutsch ins Jahr 2005 =)

          Du hast mir echt hamma geholfen *fettes dankE* ;D

          Kommentar

          Lädt...
          X