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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Mantener números array con session
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Mantener números array con session  (Leído 2,173 veces)
splendid37

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Mantener números array con session
« en: 11 Febrero 2016, 23:24 pm »

Hola.

¿Cómo puedo mantener los números aleatorios de este array?

Cuando recargo la página ya se reinician los números y aparecen otros.

Código:

session_start();

 $_SESSION['carton'] = $_SESSION['carton'];

$num[0] = rand(0,8);
$num[1] = rand(9,17);
$num[2] = rand(18,26);
$num[3] = rand(27,35);
$num[4] = rand(36,44);
$num[5] = rand(45,53);
$num[6] = rand(54,62);
$num[7] = rand(63,71);
$num[8] = rand(72,80);
$num[9] = rand(81,89);
$num[10] = rand(90,98);
$num[11] = rand(99,106);

echo $_SESSION['carton'];


¿Alguna idea?

Gracias.Saludos!


En línea

sodark

Desconectado Desconectado

Mensajes: 81


Ver Perfil WWW
Re: Mantener números array con session
« Respuesta #1 en: 12 Febrero 2016, 00:28 am »

El problema esta en:

- Creas la sesion y creas una variable asignandole un valor de una variable que no existe en memoria
Código
  1. $_SESSION['carton'] = $_SESSION['carton'];

- Creas el array pero no lo guardas en la session
- Siempre sobreescribes el array puesto que no compruebas si existe una variable de session.

Te dejo el codigo de como sería, no he podido probarlo porque ahora no tengo mucho tiempo, pero diria que funciona correctamente

Código
  1. // Miramos si existe la variable en session --> Si es la primera vez no existira, por lo tanto entrara dentro del if y creara el array
  2. if ( !isset($_SESSION['carton'] ) ) {
  3.  
  4. $num[0] = rand(0,8);
  5. $num[1] = rand(9,17);
  6. $num[2] = rand(18,26);
  7. $num[3] = rand(27,35);
  8. $num[4] = rand(36,44);
  9. $num[5] = rand(45,53);
  10. $num[6] = rand(54,62);
  11. $num[7] = rand(63,71);
  12. $num[8] = rand(72,80);
  13. $num[9] = rand(81,89);
  14. $num[10] = rand(90,98);
  15. $num[11] = rand(99,106);
  16. // Una vez creado el array, lo asignamos a una variable de session, que precisamente es la que comprovamos si existe en el if,
  17. // asi a la segunda carga, como ya existira, no volvera a generar el array puesto que ya lo tendra en la session y por lo tanto no entrara en el if
  18. $_SESSION['carton']=$num;
  19. } else {
  20. echo "Este else no es necesario, pero es para que veas que no entra en el if";
  21. }
  22. print_r($_SESSION['carton'])
  23.  


En línea

splendid37

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: Mantener números array con session
« Respuesta #2 en: 12 Febrero 2016, 12:17 pm »

Muchas gracias por la respuesta.

Funciona perfecto, pero ¿hay alguna forma de sacar cada número por separado?.

Me explico, por ejemplo hacer solo echo de "num[0]" y "num[1]".

Cuando lo cargo por primera vez sí que carga estos números y los muestra pero al recargar ya se pierden.

Siento darte la lata con esto que supongo que será muy fácil, pero al estar empezando uno no se entera de mucho..

Muchas gracias.Saludos.
« Última modificación: 15 Febrero 2016, 18:55 pm por #!drvy » En línea

sodark

Desconectado Desconectado

Mensajes: 81


Ver Perfil WWW
Re: Mantener números array con session
« Respuesta #3 en: 12 Febrero 2016, 12:54 pm »

Claro que puedes, piensa que $_SESSION['carton'] tiene un array dentro.

Podrias hacer esto en el ELSE o donde quieras pintarlo

Código
  1. $variableNum = $_SESSION['carton'];
  2. echo $variableNum[0];
  3. echo $variableNum[1];
  4. .
  5. .
  6. .
  7. .
  8. echo $variableNum[11];

O bien directamente (la mejor forma, ya que si ya lo tienes en session, pues accede directamente)

Código
  1. echo $_SESSION['carton'][0];
  2. echo $_SESSION['carton'][1];
  3. echo $_SESSION['carton'][2];
  4. echo $_SESSION['carton'][3];

La cosa es que la variable $num la segunda vez no existe, por ello lo mejor que puedes es

Código
  1. // Miramos si existe la variable en session --> Si es la primera vez no existira, por lo tanto entrara dentro del if y creara el array
  2. if ( !isset($_SESSION['carton'] ) ) {
  3. echo "Entro en el if, borra este mensaje luego!";
  4. $_SESSION['carton'][0] = rand(0,8);
  5. $_SESSION['carton'][1] = rand(9,17);
  6. $_SESSION['carton'][2] = rand(18,26);
  7. $_SESSION['carton'][3] = rand(27,35);
  8. $_SESSION['carton'][4] = rand(36,44);
  9. $_SESSION['carton'][5] = rand(45,53);
  10. $_SESSION['carton'][6] = rand(54,62);
  11. $_SESSION['carton'][7] = rand(63,71);
  12. $_SESSION['carton'][8] = rand(72,80);
  13. $_SESSION['carton'][9] = rand(81,89);
  14. $_SESSION['carton'][10] = rand(90,98);
  15. $_SESSION['carton'][11] = rand(99,106);
  16. }
  17. // Cuidado con salirte del array!
  18. echo $_SESSION['carton'][0];
  19. echo $_SESSION['carton'][1];
  20. echo $_SESSION['carton'][2];
  21. echo $_SESSION['carton'][3];
  22.  
  23. //Tendras que controlarlo de alguna forma, o pintar el array mediante for asegurandote no pasarte por ej:
  24. $size = count($_SESSION['carton']);
  25. for ( $i=0;$i<$size;$i++ ) {
  26. echo "Valor de $i = $_SESSION['carton'][i]";
  27. }
  28. // O bien usar un foreach --> http://php.net/manual/es/control-structures.foreach.php
  29.  
« Última modificación: 12 Febrero 2016, 13:05 pm por sodark » En línea

splendid37

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: Mantener números array con session
« Respuesta #4 en: 12 Febrero 2016, 13:21 pm »

Solucionado.

Muchas gracias por tu tiempo!



Una útima cosa (o eso espero), en el código como ves cuando sale un número aleatorio que sea igual que en el "carton" se marca con un "*".

El problema es que quiero que se mantenga marcado con el "*", lo he intentado con una sesión pero no me funciona o lo he puesto mal lo mas probable.

¿Cómo lo puedo hacer para que ese número se quede marcado?

Código
  1.  
  2. <?php
  3.  
  4.  
  5. $numero = rand(0,17);
  6.  
  7. if ( !isset($_SESSION['carton'] ) ) {
  8.  
  9. $num[0] = rand(0,8);
  10.  
  11. $num[1] = rand(9,17);
  12.  
  13. $_SESSION['carton']=$num;}
  14.  
  15. echo $_SESSION['carton'][0];
  16.    if ($_SESSION['carton'][0] == $numero)
  17.    {echo "*";} else {echo "";};
  18.  
  19.    echo ",";
  20.  
  21. echo $_SESSION['carton'][1];
  22. if ($_SESSION['carton'][1] == $numero)
  23.    {echo "*";} else {echo "";}
  24.  
  25. echo "<br/>","<br/>";
  26.  
  27. $_SESSION['muestra'] = $_SESSION['muestra'].$numero.", ";
  28.  
  29.    echo $_SESSION['muestra'];
  30.  
  31. ?>
  32.  
  33.  

Como bien dicen una imagen vale más que mil palabras.

Lo que quiero hacer es que una vez marcado el 4 o el 17 con un "*" se quede marcado con el "*" y seguir sacando números con el botón de siguiente número.



Mod: No hacer doble post.
« Última modificación: 15 Febrero 2016, 18:56 pm por #!drvy » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
averiaguar numeros repetidos en un array
Java
ped18 7 7,526 Último mensaje 10 Enero 2012, 17:18 pm
por [Case]
Array que lea ciertos números
Programación C/C++
DickGumshoe 2 2,376 Último mensaje 15 Enero 2012, 01:18 am
por DickGumshoe
Pasar números de String a int array. C++
Programación C/C++
tmb90 1 2,874 Último mensaje 1 Junio 2014, 12:15 pm
por vangodp
Array con numeros primos.
Programación C/C++
Ja_90 2 26,166 Último mensaje 5 Septiembre 2014, 17:16 pm
por Ja_90
array bidimensiona con numeros aleatorios sin repetir
Java
Baaz 8 11,847 Último mensaje 9 Abril 2015, 15:02 pm
por DarK_FirefoX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines