Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Generare codici random

  1. #1

    Generare codici random

    Ciao a tutti.
    Premesso che ho fatto alcune ricerche sia sul forum che in giro per il web e non sono riuscito a trovare nulla che mi soddisfi anche se mi sa di cosa abbastanza banale (per chi la sa fare ovviamente).
    Avrei bisogno di un aiuto per creare uno script che generi X codici da X caratteri alfanumerici dove X è il numero che dovrei impostare io.
    Qualcuno mi da una dritta?
    Grazie in anticipo.

  2. #2
    Codice PHP:
    class RandStr
    {
        protected     
    $car;
        protected    
    $dim;
        
            public function 
    __construct($dim)
            {
                
    $this->car "aAbBcCdDeEfFgGhHiIlLjJkKmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789";
                
    $this->dim $dim;
                
            }
            
            public function 
    CreateString()
            {
                
    srand((double)microtime()*1000000);
                
    $string '' ;

                    for(
    $inc=0$inc<$this->dim$inc++) 
                    {
                        
    $rand rand(0strlen($this->car)-1);
                        
    $scar substr($this->car$rand1);
                        
    $string $string $scar;
                    }
                
                return 
    $string;
            }
    }

    // per ottenere una stringa random di 10 caratteri

    $rand = new RandStr(10);
    echo 
    $rand->CreateString(); 
    PHP LEARN - Guide, tutorial e articoli sempre aggiornati
    NUOVO: standardLib; il potente framework PHP é ora disponibile
    *******************************************
    Scarica oggi la tua copia di MtxEventManager

  3. #3
    Wow grazie. E quando ci sarei arrivato...
    Appena lo provo ti faccio sapere.
    Nel frattempo ti faccio due domande.
    Mi sembra di capire che questo codice genera una sola stringa.
    E se ne volessi generare che so tipo 10 o 100 dove dovrei agire?
    Grazie ancora

  4. #4
    Codice PHP:
    $rand = new RandStr(10);
    echo 
    $rand->CreateString(); //stringa1
    echo '
    $rand->CreateString(); //stringa2
    echo '
    $rand->CreateString(); //stringa3 
    PHP LEARN - Guide, tutorial e articoli sempre aggiornati
    NUOVO: standardLib; il potente framework PHP é ora disponibile
    *******************************************
    Scarica oggi la tua copia di MtxEventManager

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Una soluzione diversa... (uso la stessa stringa di caratteri, modificabile a piacimento):

    Codice PHP:
    function GenerateRandomString($length$num) {
        
    $result false; if ($num 1) return $result;
        
    $charlist 'aAbBcCdDeEfFgGhHiIlLjJkKmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789';
        
    $charlist str_repeat($charlist, ((strlen($charlist) < $length)?(ceil($length strlen($charlist))):1));
        
    $chars str_split($charlist);
        
    $result = array();
        for (
    $i 1$i <= $num$i++) {
            
    shuffle($chars); $string implode(''$chars);
            
    $random substr($string0$length);
            
    $result[] = $random;
        };
        return (
    $result);
    };

    $codes GenerateRandomString(101); 
    La funzione accetta direttamente la lunghezza delle stringhe da generare e la quantità... nell'esempio si chiede di generare di lunghezza 10 caratteri un'unica stringa: viene restituito un vettore con le stringhe.
    Il principio usato è:
    - considero la lista dei caratteri da usare (un'unica stringa con i caratteri in sequenza)
    - la "allungo" ripetendola più volte se la sua lunghezza è inferiore a quella richiesta da generare (penso sarà raro)
    - genero un vettore con gli stessi caratteri
    - per ogni stringa da generare:
    - mischio il vettore dei caratteri
    - creo una stringa prendendo i primi in base alla lunghezza richiesta

  6. #6
    Originariamente inviato da eiyen
    Una soluzione diversa... (uso la stessa stringa di caratteri, modificabile a piacimento):

    Codice PHP:
    function GenerateRandomString($length$num) {
        
    $result false; if ($num 1) return $result;
        
    $charlist 'aAbBcCdDeEfFgGhHiIlLjJkKmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789';
        
    $charlist str_repeat($charlist, ((strlen($charlist) < $length)?(ceil($length strlen($charlist))):1));
        
    $chars str_split($charlist);
        
    $result = array();
        for (
    $i 1$i <= $num$i++) {
            
    shuffle($chars); $string implode(''$chars);
            
    $random substr($string0$length);
            
    $result[] = $random;
        };
        return (
    $result);
    };

    $codes GenerateRandomString(101); 

    La funzione accetta direttamente la lunghezza delle stringhe da generare e la quantità... nell'esempio si chiede di generare di lunghezza 10 caratteri un'unica stringa: viene restituito un vettore con le stringhe.
    Il principio usato è:
    - considero la lista dei caratteri da usare (un'unica stringa con i caratteri in sequenza)
    - la "allungo" ripetendola più volte se la sua lunghezza è inferiore a quella richiesta da generare (penso sarà raro)
    - genero un vettore con gli stessi caratteri
    - per ogni stringa da generare:
    - mischio il vettore dei caratteri
    - creo una stringa prendendo i primi in base alla lunghezza richiesta
    Ciao e grazie anche a te per il tuo contributo. Ho provato anche il tuo script però purtroppo non ho risultati a video o meglio credo che manchi la funzione per l'output del risultato. Sbaglio io?

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    non c'è output infatti... l'ultima riga $codes = GenerateRandomString(10, 1); è un esempio di invocazione della funzione.. se per esempio vuoi generare 12 stringhe lunghe 7 caratteri l'una userai: $codes = GenerateRandomString(7, 12); e così via... se vuoi vederle a video aggiungi in coda var_export($codes);

  8. #8
    Porca miseria, allora mi devi dare una mano per avere il risultato.
    Io con gli array non ci so fare.
    Cioé come faccio ad avere la lista dei risultati?
    Metto qualcosa tipo "echo qualestringa?" o cos'altro?
    Grazie e scusami per la niubbaggine

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    Vari casi...

    1. vuoi ottenere un'unica stringa di lunghezza 10 dentro una variabile di nome "codice" e stamparla:

    Codice PHP:
    $codice array_pop(GenerateRandomString(101)); //estrare l'unico elemento del vettore...
    print $codice;  // ...e lo stampa 


    2. vuoi ottenere 7 stringhe di lunghezza 10 e ciclare per metterle dentro una variabile di nome "codice" e stamparle:

    Codice PHP:
    $codici GenerateRandomString(107)); //computa 7 stringhe
    foreach ($codice as $codice) { // fa un ciclo scorrendo le stringhe...
      
    print $codice//... e le stampa
    }; 
    3. vuoi ottenere 7 stringhe di lunghezza 10 e stampare la terza (l'indice parte da 0!)

    Codice PHP:
    $codici GenerateRandomString(107)); //computa 7 stringhe...
    print $codici[2]; // ...e stampa la terza (si deve mettere la posizione-1) 


    dove fai "print ..." ovviamente puoi fare quel che vuoi (anche molte operazioni).




    Ti posto anche una versione modificata (cambia solo la riga con return): se richiedi di generare più stringhe ti viene restituito un vettore (valgono gli esempi di sopra), se invece ne richiedi una sola (secondo parametro = 1) ti viene restituita una semplice stringa (ultima riga del post seguente che puoi "stampare normalmente")

    Codice PHP:
    function GenerateRandomString($length$num) {
        
    $result false; if ($num 1) return $result;
        
    $charlist 'aAbBcCdDeEfFgGhHiIlLjJkKmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789';
        
    $charlist str_repeat($charlist, ((strlen($charlist) < $length)?(ceil($length strlen($charlist))):1));
        
    $chars str_split($charlist);
        
    $result = array();
        for (
    $i 1$i <= $num$i++) {
            
    shuffle($chars); $string implode(''$chars);
            
    $random substr($string0$length);
            
    $result[] = $random;
        };
        return ((
    sizeof($result)>1)?($result):($result[0]));
    };

    $codes GenerateRandomString(102); // restituisce un vettore di 2 elementi
    $code GenerateRandomString(101); // restituisce un'unica stringa 

  10. #10
    Semplicemente perfetto grazie.
    E' proprio uello di cui avevo bisogno.
    Adesso però faccio una pausa per andare a studiare gli array perché ci sto sbattendo sempre più il muso contro e sarebbe il caso di iniziare a capirci qualcosa.
    Grazie infinite a tutti e due per il vostro aiuto.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.