L'ultimo articolo scritto su Sir Bit risale a marzo 2014. La versione che state visitando è un archivio: le pagine sono accessibili come sempre e gli autori potrebbero rispondere ai commenti, ma non saranno inseriti dei nuovi articoli. Visita questa pagina per i dettagli.

PHP – Generare una stringa random con caratteri e lunghezza personalizzati

Numeri a random su sfondo azzurro

Una funzione, da scaricare gratuitamente, per generare una stringa a random di lunghezza voluta e con caratteri personalizzati

La necessità di generare una stringa random, a partire da determinati caratteri e di una certa lunghezza, è sentita soprattutto per quanto riguarda la gestione delle password. In questo caso possiamo fare riferimento ad alcuni script in javascript pre-confezionati.

Il concetto, in php, è lo stesso del codice in javascript.
In questo articolo vedremo una funzione leggermente più complessa, che permette di generare una stringa a random con alcune particolarità:
– la possibilità di ottenere come output una stringa della lunghezza voluta
– la possibilità di scegliere quali caratteri e quali simboli andranno a comporre la stringa finale

Il tutto sarà fatto tramite una funzione piuttosto semplice, a cui faremo passare determinati parametri.
Per la sua comprensione è utile la conoscenza sull’uso delle funzioni e degli array. Chi fosse alle prime armi può comunque fare uso della funzione, che richiede poca (o nessuna) personalizzazione.

Il codice è scaricabile gratuitamente in formato zip dal link qui sotto.

La funzione: creare una stringa random

La funzione è di facile comprensione (nello zip da scaricare troverete anche i commenti ai suoi argomenti da passare).
Vediamo il codice, che commenteremo subito dopo.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
function random_string($length=32, $args = array()){

    $permit = array(); //contiene i gruppi di caratteri permessi

    //se non è stato passato alcun argomento, rendo tutti i gruppi disponibili
    //altrimenti rendo disponibili solo i gruppi abilitati in $args
    if(empty($args)){
        $permit[] = 'alfa_upper';
        $permit[] = 'alfa_lower';
        $permit[] = 'number';
        $permit[] = 'simbol';
    }else{
        $permit = $args;
    }

    $characters = '';

    if(in_array('alfa_upper', $permit)){
        $characters.= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    }

    if(in_array('alfa_lower', $permit)){
        $characters.= 'abcdefghijklmnopqrstuvwxyz';
    }

    if(in_array('number', $permit)){
        $characters.= '1234567890';
    }

    if(in_array('simbol', $permit)){
        $characters.= '!"£$%&/()=?\'^@#[]*';
    }

    //controllo di sicurezza: se è stato passato un valore errato a $length, prendo 32 come default
    if(!is_numeric($length)){
        $length = 32;
    }

    $string = '';
    for($i=0; $i<$length; $i++){
        $string = $string.substr($characters, rand(0, strlen($characters)-1), 1);
    }
    return $string;
}

$length è la lunghezza della stringa da generare. Per default, cioè se non viene passato alcun valore, è impostato a 32 caratteri. All’interno della funzione troverete anche un controllo di sicurezza, che impone sempre 32 caratteri nel caso in cui non sia stato passato a $length un valore numerico (in questo modo si evitano degli errori non voluti).

$args è l’argomento che ci permette di stabilire quali caratteri andranno a comporre la stringa finale. Come potete notare, li ho suddivisi a gruppi, i cui “nomi” formeranno il valore di $args. Se non è stato passato alcun array, saranno presi tutti i gruppi di caratteri, altrimenti soltanto i gruppi passati in $args. I nomi dei gruppi sono i seguenti:
– alfa_upper: nella stringa finale sono permessi i caratteri alfabetici maiuscoli
– alfa_lower: nella stringa finale sono permessi i caratteri alfabetici minuscoli
– number: nella stringa finale sono permesse le cifre numeriche
– simbol: nella stringa finale sono permessi i simboli.

Da notare che la categoria “simbol” può essere personalizzata a piacere, aggiungendone o rimuovendone alcuni. Allo stesso modo, potete creare nuovi gruppi di caratteri seguendo il criterio visto sopra.
Anche nel caso di $args è stato inserito un controllo, che elimina dai valori quelli non permessi (cioè i valori diversi dai gruppi prestabiliti).

Test della funzione

Ecco due esempi di test della funzione.
Nel primo caso si prendono i parametri di default: quindi la stringa sarà lunga 32 caratteri e potrà essere composta da caratteri alfa-numerici e da simboli.
Nel secondo caso forziamo gli argomenti: la stringa sarà lunga 20 caratteri e conterrà soltanto caratteri minuscoli e numeri.

1
2
3
echo random_string();

echo random_string(20, array('alfa_lower', 'number'));
Etichette
Etichette:,
Ultimi Commenti
  1. lucius

Rispondi a lucius Annulla risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.