Aquí hay una línea simple que genera una verdadera cadena aleatoria sin ningún ciclo de secuencia de comandos o uso de bibliotecas OpenSSL.
echo substr(str_shuffle(str_repeat('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', mt_rand(1,10))), 1, 10);
Desglosarlo para que los parámetros estén claros
// Character List to Pick from
$chrList = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
// Minimum/Maximum times to repeat character List to seed from
$chrRepeatMin = 1; // Minimum times to repeat the seed string
$chrRepeatMax = 10; // Maximum times to repeat the seed string
// Length of Random String returned
$chrRandomLength = 10;
// The ONE LINE random command with the above variables.
echo substr(str_shuffle(str_repeat($chrList, mt_rand($chrRepeatMin,$chrRepeatMax))), 1, $chrRandomLength);
Este método funciona repitiendo aleatoriamente la lista de caracteres, luego baraja la cadena combinada y devuelve el número de caracteres especificado.
Puede aleatorizar aún más esto, aleatorizando la longitud de la cadena devuelta, reemplazándola $chrRandomLength
por mt_rand(8, 15)
(para una cadena aleatoria de entre 8 y 15 caracteres).
strlen($characters)
=>strlen($characters) - 1
- la longitud de la cadena comienza con 1