elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  [Ayuda] problema con libreria que genera string aleatorio
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Ayuda] problema con libreria que genera string aleatorio  (Leído 3,175 veces)
Graphixx


Desconectado Desconectado

Mensajes: 1.336


Full Stack Developer


Ver Perfil WWW
[Ayuda] problema con libreria que genera string aleatorio
« en: 22 Enero 2015, 23:12 pm »

Tengo un script de generacion aleatoria de strings, que funciona perfecto en el xampp del portatil, pero en el xampp de la torre no.
Alguna idea de por que siendo la misma instalacion de xampp, el script funciona mal en la torre.


Código
  1. <?php
  2. ini_set('max_execution_time', 0);
  3.  
  4. function RandomString($length=10,$uc=TRUE,$n=TRUE,$sc=FALSE)
  5. {
  6.    $source = 'abcdefghijklmnopqrstuvwxyz';
  7.    //if($uc==1) $source .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  8. if($uc==1) $source .= 'abcdefghijklmnopqrstuvwxyz';
  9.    if($n==1) $source .= '1234567890';
  10.    //if($sc==1) $source .= '|@#~$%()=^*+[]{}-_';
  11.    if($length>0){
  12.        $rstr = "";
  13.        $source = str_split($source,1);
  14.        for($i=1; $i<=$length; $i++){
  15.            mt_srand((double)microtime() * 1000000);
  16.            $num = mt_rand(1,count($source));
  17.            $rstr .= $source[$num-1];
  18.        }
  19.  
  20.    }
  21.    return $rstr;
  22. }
  23.  
  24. $link=mysql_connect("localhost","root","");
  25. mysql_select_db("seriales",$link);
  26.  
  27. require_once 'Serial.php';
  28. for ($i = 0; $i < 100; $i++) {
  29.  
  30.    $cod1 = RandomString(6,TRUE,true,false);
  31.  
  32. $inputString = addslashes(strip_tags($cod1));
  33. $inputLength = (int)4;
  34. $serial = new Serial($inputLength);
  35. $serialString = $serial->generate($inputString);
  36.  
  37.    mysql_query("insert into seriales(qr,serial) values('$cod1','$serialString')",$link);
  38. }
  39. mysql_close($link);
  40. ?>
  41.  

En el portatil los string se generan bien, y sale un codigo aleatorio de 6 cifras. Pero cuando lo ejecuto en la torre, pasando el script directamente del portatil a la torre sin tocar nada, el string se queda como que pegado en la primer cifra, no logro entender por que.


« Última modificación: 22 Enero 2015, 23:19 pm por Graphixx » En línea

Nada tiene fin solo hay pequeñas pausas, pausas que determinan el comienzo de otros. Graphixx Rōninnovation
MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: [Ayuda] problema con libreria que genera string aleatorio
« Respuesta #1 en: 23 Enero 2015, 00:59 am »

Comenta la linea del srand o prueba con:

Código
  1. mt_srand((double)microtime(true) * 1000000);

Edit: Y muevela fuera del for.


« Última modificación: 23 Enero 2015, 01:02 am por MinusFour » En línea

Graphixx


Desconectado Desconectado

Mensajes: 1.336


Full Stack Developer


Ver Perfil WWW
Re: [Ayuda] problema con libreria que genera string aleatorio
« Respuesta #2 en: 25 Enero 2015, 03:45 am »

Edit: Y muevela fuera del for.

Antes o despues del for ?  :xD
En línea

Nada tiene fin solo hay pequeñas pausas, pausas que determinan el comienzo de otros. Graphixx Rōninnovation
MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: [Ayuda] problema con libreria que genera string aleatorio
« Respuesta #3 en: 25 Enero 2015, 04:00 am »

Antes o despues del for ?  :xD

Debe ser antes.
En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.855



Ver Perfil WWW
Re: [Ayuda] problema con libreria que genera string aleatorio
« Respuesta #4 en: 25 Enero 2015, 21:46 pm »

Yo el mt_srand lo veo bien ahí, así genera una nueva semilla por cada iteración. Estas seguro de que son las mismas versiones de XAMPP ?  Y en donde se queda pegado, en la propia función de RandomString o en el for que genera el serial ? No te da ningún error (teniendo display_errors on) ?

Saludos
En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: [Ayuda] problema con libreria que genera string aleatorio
« Respuesta #5 en: 26 Enero 2015, 01:17 am »

Yo el mt_srand lo veo bien ahí, así genera una nueva semilla por cada iteración. Estas seguro de que son las mismas versiones de XAMPP ?  Y en donde se queda pegado, en la propia función de RandomString o en el for que genera el serial ? No te da ningún error (teniendo display_errors on) ?

Saludos

Realmente no necesitas generar la semilla nuevamente, al generar el numero aleatorio la semilla vuelve a cambiar, por eso solo debería generar la semilla una vez al principio (a menos que este usando la funcion para otra cosa).

Lo que creo que esta pasando aqui es que mt_srand al recibir de parametro un entero, esta truncando los decimales (tecnicamente el unico parametro que recibe la funcion es entero).


Código
  1. <?php
  2.  
  3. mt_srand(10000.20);
  4. echo mt_rand().PHP_EOL;
  5.  
  6. mt_srand(10000.89);
  7. echo mt_rand().PHP_EOL;
  8.  

Código:
╭─m1n054@ALEXPC ~/d/php
╰─ ❯❯❯ php ex1.php
983171632
983171632

Aun así no estoy seguro de porque en una de sus maquinas funciona y en el otro no. Debe ser un error de casting ya sea de doble a entero o de string a double.

Creo que mejor aun sería utilizar el código de la pagina de PHP:

Código
  1. function make_seed()
  2. {
  3.  list($usec, $sec) = explode(' ', microtime());
  4.  return (float) $sec + ((float) $usec * 100000);
  5. }
  6. mt_srand(make_seed());

Aunque cabe notar que:

Citar
Nota: Desde PHP 4.2.0, no es necesario usar una semilla para usar el generador de números aleatorios con srand() o mt_srand() ya que ahora se hace automáticamente.

http://php.net/manual/es/function.mt-srand.php
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda [Problema al convertir HEX a String]
Programación Visual Basic
The Swash 3 2,808 Último mensaje 1 Febrero 2010, 17:01 pm
por The Swash
[Problema] Pantallazo de color aleatorio no me permite trabajar
Hardware
Dreamaker 3 3,338 Último mensaje 16 Mayo 2010, 23:53 pm
por Aprendiz-Oscuro
Ayuda en codigo que genera aleatorio
Programación C/C++
cacara 8 6,296 Último mensaje 8 Enero 2012, 11:29 am
por SirLanceCC
problema al crear roge ap. essid aleatorio
Hacking Wireless
Marmol 0 2,248 Último mensaje 6 Marzo 2013, 22:57 pm
por Marmol
String aleatorio y sin repeticiones
Programación C/C++
Calvin11 0 1,459 Último mensaje 22 Octubre 2016, 19:54 pm
por Calvin11
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines