repetir - generar usuarios aleatorios php
Generando cadenas alfanuméricas(pseudo) aleatorias (14)
1 línea
$FROM = 0; $TO = ''zzzz'';
$code = base_convert(rand( $FROM ,base_convert( $TO , 36,10)),10,36);
echo $code;
¿Cómo puedo generar una cadena alfanumérica (pseudo) aleatoria, algo así como: ''d79jd8c'' en PHP?
Esto es algo que uso:
$cryptoStrong = true; // can be false
$length = 16; // Any length you want
$bytes = openssl_random_pseudo_bytes($length, $cryptoStrong);
$randomString = bin2hex($bytes);
Puedes ver los Documentos para openssl_random_pseudo_bytes aquí , y los Documentos para bin2hex aquí
Genere una cadena criptográficamente fuerte, aleatoria (potencialmente) de 8 caracteres usando la función openssl_random_pseudo_bytes :
echo bin2hex(openssl_random_pseudo_bytes(4));
Forma procedimental:
function randomString(int $length)
{
return bin2hex(openssl_random_pseudo_bytes($length));
}
Actualizar:
PHP7 introdujo las funciones random_x()
que deberían ser aún mejores. Si proviene de PHP 5.X, use la excelente biblioteca paragonie/random_compat que es un polyfill para random_bytes() y random_int() de PHP 7.
function randomString($length)
{
return bin2hex(random_bytes($length));
}
He realizado la siguiente función rápida solo para jugar con la función range()
. Simplemente podría ayudar a alguien en algún momento.
Function pseudostring($length = 50) {
// Generate arrays with characters and numbers
$lowerAlpha = range(''a'', ''z'');
$upperAlpha = range(''A'', ''Z'');
$numeric = range(''0'', ''9'');
// Merge the arrays
$workArray = array_merge($numeric, array_merge($lowerAlpha, $upperAlpha));
$returnString = "";
// Add random characters from the created array to a string
for ($i = 0; $i < $length; $i++) {
$character = $workArray[rand(0, 61)];
$returnString .= $character;
}
return $returnString;
}
La respuesta de Jeremy es genial. Si, como yo, no está seguro de cómo implementar range (), puede ver mi versión usando range ().
<?php
$character_array = array_merge(range(''a'', ''z''), range(0, 9));
$string = "";
for($i = 0; $i < 6; $i++) {
$string .= $character_array[rand(0, (count($character_array) - 1))];
}
echo $string;
?>
Esto hace exactamente lo mismo que Jeremy, pero usa matrices fusionadas donde usa una cadena, y usa count () donde usa strlen ().
Me gusta esta función para el trabajo
function randomKey($length) {
$pool = array_merge(range(0,9), range(''a'', ''z''),range(''A'', ''Z''));
for($i=0; $i < $length; $i++) {
$key .= $pool[mt_rand(0, count($pool) - 1)];
}
return $key;
}
echo randomKey(20);
Primero crea una cadena con todos tus personajes posibles:
$characters = ''abcdefghijklmnopqrstuvwxyz0123456789'';
También podría usar range() para hacer esto más rápidamente.
Luego, en un bucle, elija un número aleatorio y úselo como el índice de la cadena de $characters
para obtener un carácter aleatorio y añádalo a su cadena:
$string = '''';
$max = strlen($characters) - 1;
for ($i = 0; $i < $random_string_length; $i++) {
$string .= $characters[mt_rand(0, $max)];
}
$random_string_length
es la longitud de la cadena aleatoria.
Puede usar el siguiente código, copiado de este artículo . Es similar a las funciones existentes, excepto que puede forzar el recuento de caracteres especiales:
function random_string()
{
// 8 characters: 7 lower-case alphabets and 1 digit
$character_set_array = array();
$character_set_array[] = array(''count'' => 7, ''characters'' => ''abcdefghijklmnopqrstuvwxyz'');
$character_set_array[] = array(''count'' => 1, ''characters'' => ''0123456789'');
$temp_array = array();
foreach ($character_set_array as $character_set) {
for ($i = 0; $i < $character_set[''count'']; $i++) {
$temp_array[] = $character_set[''characters''][rand(0, strlen($character_set[''characters'']) - 1)];
}
}
shuffle($temp_array);
return implode('''', $temp_array);
}
Sé que es una publicación anterior, pero me gustaría contribuir con una clase que he creado basada en la respuesta de Jeremy Ruten y mejorada con sugerencias en comentarios:
class RandomString
{
private static $characters = ''abcdefghijklmnopqrstuvwxyz0123456789'';
private static $string;
private static $length = 8; //default random string length
public static function generate($length = null)
{
if($length){
self::$length = $length;
}
$characters_length = strlen(self::$characters) - 1;
for ($i = 0; $i < self::$length; $i++) {
self::$string .= self::$characters[mt_rand(0, $characters_length)];
}
return self::$string;
}
}
Si desea una forma muy sencilla de hacerlo, puede apoyarse en las funciones PHP existentes. Este es el código que uso:
substr( sha1( time() ), 0, 15 )
time()
le da la hora actual en segundos, ya que epoch, sha1()
cifra en una cadena de 0-9a-f, y substr()
permite elegir una longitud. No tiene que comenzar en el carácter 0, y cualquiera que sea la diferencia entre los dos números será la longitud de la cadena.
Solución de una línea:
echo substr( str_shuffle( str_repeat( ''abcdefghijklmnopqrstuvwxyz0123456789'', 10 ) ), 0, 7 );
Puede cambiar el parámetro substr para establecer una longitud diferente para su cadena.
Tal vez me perdí algo aquí, pero aquí hay una forma de usar la función uniqid () .
Use la tabla ASCII para elegir un rango de letras, donde: $ range_start, $ range_end es un valor de la columna decimal en la tabla ASCII.
Me parece que este método es más agradable en comparación con el método descrito, donde el rango de caracteres se define específicamente en otra cadena.
// range is numbers (48) through capital and lower case letters (122)
$range_start = 48;
$range_end = 122;
$random_string = "";
$random_string_length = 10;
for ($i = 0; $i < $random_string_length; $i++) {
$ascii_no = round( mt_rand( $range_start , $range_end ) ); // generates a number within the range
// finds the character represented by $ascii_no and adds it to the random string
// study **chr** function for a better understanding
$random_string .= chr( $ascii_no );
}
echo $random_string;
Ver más:
function generateRandomString($length = 10) {
$characters = ''0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'';
$charactersLength = strlen($characters);
$randomString = '''';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
echo generateRandomString();