[PHP] Script zur Erstellung von 6-Stelligen Codes

Dieses Thema im Forum "Webentwicklung" wurde erstellt von DJ1986, 19. Mai 2011 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 19. Mai 2011
    Script zur Erstellung von 6-Stelligen Codes

    Moin,

    Ich bin auf der Suche nach einem Script.

    Es soll 6 Stellig sein.
    Und alle möglichen Kombinationen aus A-Z und 0-9 mir stellen tut.

    Hat da evtl. jemand was fertigs wo liegen?
    Würde mich über jede Hilfe Freuen.
     
  2. 19. Mai 2011
    AW: Script zuerstellunge 6-Stelliger Codes

    dieses script erzeugt dir eine n-stellige kombination:
    Scripts | PHP | Erweiterter Passwort Generator

    falls du alle möglichen kombinationen haben willst, kannst du es ja umschreiben.

    gruß
     
  3. 19. Mai 2011
    AW: Script zuerstellunge 6-Stelliger Codes

    für nen zufallsgenerator (doppelte möglich) reicht folgendes:

    PHP:
    $chars  array_merge ( range ( 0 9 ),  range ( 'A' 'Z' ));
    shuffle ( $chars );

    $pw  implode ( '' array_slice ( 0 6 ));
    für alle möglichen kombinationen ist der aufwand schon höher...

    ps: installier dir mal die rechtschreibhilfe für firefox (oder was auch immer), das is ja furchtbar!
     
  4. 20. Mai 2011
    AW: Script zur Erstellung von 6-Stelligen Codes

    Es soll keinen Zufällige sein.
    Sondern alle wo man aus Buchstaben und Zahlen kombiniert erstellen kann und 6-stellig sind.

    Ich weiß das es einige Millionen sein werden.
    Aber das ist a gewünscht.
     
  5. 20. Mai 2011
    AW: Script zur Erstellung von 6-Stelligen Codes

    EIn Zufallsgenerator tut eben dies -> ein paar "tausend" kombinationen erstellen!

    Hier z.b
    Scripts | PHP | Erweiterter Passwort Generator

    Ein wenig Eigenlust zwecks PHP Coding musst du schon mitbringen
     
  6. 20. Mai 2011
    AW: Script zur Erstellung von 6-Stelligen Codes

    PHP:
    <? php
       set_time_limit
    ( 0 );
       
    $chars  array_merge ( range ( 0 9 ),  range ( 'A' 'Z' ));
       
    $count  count ( $chars );
       for(
    $i  0 $i < $count $i ++) 
          for(
    $j  0 $j < $count $j ++) 
             for(
    $k  0 $k < $count $k ++) 
                for(
    $l  0 $l < $count $l ++) 
                   for(
    $m  0 $m < $count $m ++) 
                      for(
    $n  0 $n < $count $n ++) 
                         echo 
    $chars [ $i ]. $chars [ $j ]. $chars [ $k ]. $chars [ $l ]. $chars [ $m ]. $chars [ $n ];
    ?>

    Hättest du Murdocs Script genommen und ein bisschen logisch gedacht, hättest du das auch selbst zusammen bekommen..

    Das gibt dir jetzt jeden Code aus, der möglich ist...

    Und bitte kauf dir nen Duden für Grammatik!
     
  7. 20. Mai 2011
    AW: Script zur Erstellung von 6-Stelligen Codes


    Autsch? Nette Lösung aber ein timelimit bei so etwas?? Lässt sich viel viel einfacher Lösen und braucht keine 10 Zeilen.
     
  8. 20. Mai 2011
    AW: Script zur Erstellung von 6-Stelligen Codes

    ich denke auch das php etwas zu lange braucht oder ggf. gleich ein error gibt wegen den schleifen.
    probiers mal mit JS.

    @DJ1986
    dein avatar kenn ich doch Flashstar.de - Das dynamische Flashstar Duo - Matthias & Selma-Caroline Kannengiesser
    wenn du der bist von den ich denke das du der bist,
    dann sollte das ja für dich kein problem sein.

    // edit
    falls du kontollieren willst ob eine kombination schon vergeben ist,
    dann zeichne die kombinationen auf und generiere ein neues,
    falls eine kombination schon vergeben ist.
    PHP:
    $myPwd  = array( '123456' );
    function 
    genPwd  (){
        global 
    $myPwd ;
        
    $chars  array_merge ( range ( 0 9 ),  range ( 'A' 'Z' ));
        
    shuffle ( $chars );
        
    $pwd  implode ( '' array_slice ( $chars 0 6 ));
        if (
    in_array ( $pwd $myPwd )){
            
    $pwd  genPwd ();
        }
        
    $myPwd [] =  $pwd ;
        return 
    $pwd ;
    }
    echo 
    '<p>newPwd: ' . genPwd (). '</p>' ;
    print_r ( $myPwd );
     
  9. 20. Mai 2011
    AW: Script zur Erstellung von 6-Stelligen Codes

    Dann zeig mal her...
    Mir ist grad nix anders eingefallen und ich wüsste auch nicht wie es einfacher gehen sollte..
    Weil du musst für jedes Zeichen im Code das Array einmal durchlaufen..
    Macht 6 for-Schleifen..
    Klar ist das nicht geil, aber wie ich das verstehe will er alle möglichen Codes..
    Und das macht was er will..

    Außerdem was heißt "aber ein Zeitlimit bei so etwas" ?!?
     
  10. 20. Mai 2011
    AW: Script zur Erstellung von 6-Stelligen Codes

    hab was im netz gefunden, das nur ein string in verschieden kombinationen zusammen stellt.
    PHP:
    function  get_variants ( $letters ){
        
    $words  = array();
        
    $word  $letters ;
        
    # $numbers equals the maximum number of possibilities
        
    $numbers  factorial ( strlen ( $letters ));

        for(
    $i  1 ; $i <= $numbers [ 0 ]; $i ++) {
            while(
    in_array ( $word , $words )){
                
    $word  str_shuffle ( $word );
            }
            
    array_push ( $words , $word );
        }
        
    sort ( $words );
        return 
    $words ;
    }
    # returns $integer!
    function  factorial  ( $integer ){
        
    $num  1 ;
        
    $return [ 1 ] =  1 ;
        for(
    $i  2 ; $i <= $integer ; $i ++){
            
    $num  *=  $i ;
            
    $return [ $i ] =  $num ;
        }
        
    rsort ( $return );
        return 
    $return ;
    }

    $charsAll  implode ( '' array_merge ( range ( 0 9 ),  range ( 'A' 'Z' )));
    $charsMedium  implode ( '' array_merge ( range ( 0 9 )));
    $charsMini  implode ( '' array_merge ( range ( 0 3 )));
    $string  $charsMini ;
    print_r ( get_variants ( $string ));
    // Array ( [0] => 0123 [1] => 0132 [2] => 0213 [3] => 0231 [4] => 0312 [5] => 0321 [6] => 1023 [7] => 1032 [8] => 1203 [9] => 1230 [10] => 1302 [11] => 1320 [12] => 2013 [13] => 2031 [14] => 2103 [15] => 2130 [16] => 2301 [17] => 2310 [18] => 3012 [19] => 3021 [20] => 3102 [21] => 3120 [22] => 3201 [23] => 3210 ) 
    verwendet man $charsMini geht's recht gut.
    $charsMedium (also zahlen von 0-9) hört der spass schon wieder auf.
    $charsAll (also 0-9 A-Z) würd ich sagen "no way"

    und es nich mal berücksichtigt, das ein wert mit sich selber und anderen kombinierbar ist.
    als z.b.:
    000
    001
    002
    010
    011
    012
    ...
    020
    021
    ...
    ...
    200
    201
    202
    ...
    222

    ich glaube dein vorhaben wird in php nicht gehen.
     
  11. 20. Mai 2011
    AW: Script zur Erstellung von 6-Stelligen Codes

    In was kann ich es dann realisieren?

    Ich suche das für ein Tracking System bei meinem Neuem Projekt.

    Grüße
     
  12. 20. Mai 2011
    AW: Script zur Erstellung von 6-Stelligen Codes

    php? du hast doch sogar schon fertige lösungen in diesem thread bzw. was willst du genau machen? wie soll das tracking system aussehen, bzw. was soll dieses alles können?
     
  13. 20. Mai 2011
    AW: Script zur Erstellung von 6-Stelligen Codes

    In was ist denn das Tracking System geschrieben?!
    Es ist ja prinzipiell in PHP zu machen, aber wie du vielleicht siehst oder merkst gibt es Sprachen die eher für solche höheren Aufgaben nützlich sind. Zumal PHP einfach als Web-Skript Sprache ausgelegt ist und nicht für komplexe Berechnungen oder solche String -Methoden.
     
  14. 20. Mai 2011
    AW: Script zur Erstellung von 6-Stelligen Codes

    der code von °EraZoR° ist doch genau das, was du brauchst. der erstellt dir alle möglichen kombinationen.

    dauert halt a weng, daher das set_time_limit(0).
    ob php oder javascript -> das sollte gleich lang dauern (und javascript blockiert genauso wie php in diesem fall).

    wenn du immer nur einen code auf einmal brauchst, dann musst du eben speichern wo die schleife steht.

    PHP:
    <? php

    function  get_next_code () {
        
    $meta  = array( 0 0 0 0 0 0 );
        
        
    // cache laden (falls vorhanden)
        
    if ( file_exists ( $path  dirname ( __FILE__ ) .  '/codegen.log' )) {
            
    $data  file_get_contents ( $path );
            if (!empty(
    $data ) &&  $data [ 0 ] ===  '[' )
                
    $meta  json_decode ( $data true );
        }
        
        
    $chars   array_merge ( range ( 0 9 ),  range ( 'A' 'Z' ));
        
    $length  count ( $chars );
        
    $count   count ( $meta );
        
        
    // erst beste position im array erhöhen
        
    for ( $p  = - 1 $i  0 $i  $count ; ++ $i ) {
            if (
    $meta [ $i ] +  $length ) {
                
    $p  $i ;
                ++
    $meta [ $i ];
                break;
            }
        }
        
        
    // keine position gefunden
        
    if ( $p  === - 1 )
            return 
    'MAXIMUM REACHED' ;
        
        
    // alle positionen vor der gefundenen zurücksetzen,
        // da nur die erste gezählt wird. 
        // der rest erhöht sich nur wenn die position zuvor "voll" war
        
    if ( $p  !==  0 )
            for (
    $i  0 $i  $p ; ++ $i )
                
    $meta [ $i ] =  0 ;
        
        
    // cache erneuern/anlegen
        
    file_put_contents ( $path json_encode ( $meta ));
        
        
    // code generieren
        
    $res  '' ;
        
        for (
    $i  0 $i  $count ; ++ $i )
            
    $res  .=  $chars [ $meta [ $i ]];
            
        return 
    $res ;
    }
    prototype:
    Code:
    string get_next_code(void)
    dieses script legt eine datei namens "codegen.log" im verzeichnis des scripts ab. dort wird gespeichert was zuletzt ausgeliefert wurde.

    wenn du diese datei löscht fängt die funktion von vorn an.

    btw: mit der funktion bist du nicht auf 6-zeichen limitiert. du kannst das einfach erweitern indem du die variable $meta oben anpasst.
     
  15. 21. Mai 2011
    AW: Script zur Erstellung von 6-Stelligen Codes

    Um eine Zahl (z.B. die Schleifenposition) in den entsprechenden Code zu konvertieren, kann man auch base_convert verwenden:


    PHP:
    <? php
    function  getCode ( $position $length  6 ) {
        return 
    str_pad (
                   
    base_convert ( $position 10 36 ), 
                   
    $length
                   
    '0'
                   
    STR_PAD_LEFT
               
    );
    }


    //Test
    $i  287651950 ;
    echo 
    getCode ( $i ++) .  ' - ' ;
    echo 
    getCode ( $i ++) .  ' - ' ;
    echo 
    getCode ( $i ++) .  ' - ' ;
    echo 
    getCode ( $i ++);
     
  16. 21. Mai 2011
    AW: Script zur Erstellung von 6-Stelligen Codes

    netter gedankengang mit base 36 zu arbeiten!
    das funktioniert aber auch nur bei werten von [0-9a-z] (in richtiger reihenfolge).
    sollte sich der schlüssel ändern (z.b. [a-z0-9]) funktioniert es nicht mehr

    aber für diesen fall absolut ausreichend! noch ein strtoupper() und die funkton liefert genau das, was er will.
    echt netter lösungsweg.
     
  17. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.