Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Guardar Valor de Session

Estas en el tema de Guardar Valor de Session en el foro de PHP en Foros del Web. Buenas a todos. Estoy intentando hacer un mini juego muy simple Desde la pagina HTML , desde un formulario guardo datos y se los envio ...
  #1 (permalink)  
Antiguo 14/11/2015, 18:44
Avatar de WeTrust  
Fecha de Ingreso: noviembre-2015
Ubicación: En una habitación muy pequeña
Mensajes: 7
Antigüedad: 9 años, 1 mes
Puntos: 0
Guardar Valor de Session

Buenas a todos.
Estoy intentando hacer un mini juego muy simple
Desde la pagina HTML , desde un formulario guardo datos y se los envio al fichero php el cual recibe el valor introducido por el usuario y este compara con el que tiene alojado "el cual es un número aleatorio" para mostrar un mensaje que diga si se aleja o se acerca , después de eso , vuelve a la pagina del formulario y vuelta a empezar

Mi problema es que cada vez que vuelvo a la pagina html para enviar de nuevo un formulario con el nuevo numero , el numero aleatorio del a pagina php ha cambiado , lo cual , no almacena el numero en memoria , es un numero nuevo.

He probado de todo lo que mis básicos conocimientos saben ya que estoy empezando en php.

He probado a crear un script con la función session_start(); y luego he creado la variable $_SESSION , he visto ejemplos , tutoriales , nada , no se como hacer que ese valor generado de forma aleatoria se quede fijado para la siguiente vuelta a la pagina...

¿ Alguien puede decirme cual es la forma de almacenar el valor generado desde una función ran(min,max) para que se guarde en la sesión o memoria ? como si fuera un valor CONSTANTE al estilo java.

Gracias por vuestra atención
  #2 (permalink)  
Antiguo 14/11/2015, 18:48
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 10 meses
Puntos: 69
Respuesta: Guardar Valor de Session

Con variables de sesión se hace, debe ser que las estás usando mal, coloca el codigo que tienes hasta el momento a ver donde está el error.
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #3 (permalink)  
Antiguo 15/11/2015, 04:06
Avatar de WeTrust  
Fecha de Ingreso: noviembre-2015
Ubicación: En una habitación muy pequeña
Mensajes: 7
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Guardar Valor de Session

Gracias por tu respuesta.
Ayer era muy tarde y entre el sueño y la frustración se me olvido poner el código

Archivo ejercicio05.html

" fichero formulario que recoge los datos del usuario y se lo manda al fichero php para analizarlo y devolver la respuesta "

<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.

Ejercicio 05: juego del número secreto
Construyamos ahora un programa PHP para jugar al típico juego del número secreto.
El ordenador elegirá un número al azar entre 1 y 100, y luego nos pedirá que lo adivinemos. Si
introducimos un número menor o mayor que el número secreto, el programa nos dará una pista
(“el número secreto es mayor” o “el número secreto es menor”). Si acertamos, habremos
ganado, y el programa nos dirá cuántos intentos hemos necesitado para adivinar el número.

-->
<html>
<head>
<title>TODO supply a title</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="micss.css"
</head>
<body>
<form method="post" action="ejercicio05_1.php">
<input type="number" name="numero1">
<br>
<input type="submit" name="boton" value="Enviar">
<br>
</form>
</body>
</html>


*---------------------------------------------------*
Archivo PHP para recibir los datos y devolver una respuesta

<!-- N.F.N.D-->

<!-- Official Guide........: http://php.net/manual/es/index.php
** Official Helps........:
** Author................: RadWulf Candle
** Date..................:
** Last changed..........:
Ejercicio 05: juego del número secreto
Construyamos ahora un programa PHP para jugar al típico juego del número secreto. El
ordenador elegirá un número al azar entre 1 y 100, y luego nos pedirá que lo adivinemos. Si
introducimos un número menor o mayor que el número secreto, el programa nos dará una pista
(“el número secreto es mayor” o “el número secreto es menor”). Si acertamos, habremos
ganado, y el programa nos dirá cuántos intentos hemos necesitado para adivinar el número.
-->


<!DOCTYPE html>
<html>
<head>
<title> Title </title>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="micss.css">
</head>
<body>
<?php

function generarValor() {
return $var = rand(0, 1);
}

$valorRecibido = $_REQUEST['numero1'];
$valorAleatorio = generarValor();
echo "<br>";
echo $valorAleatorio;
echo "<br>";
echo $valorRecibido;
echo "<br>";
//
echo "<table class ='nuevo2'>";
echo "<th colspan='2' class='nuevo1'> Número Secreto </th>";
echo "<tr>";
echo "<td> Numero </td>";
echo "<td> Numero Aleatorio : " . $valorAleatorio . "</td>";
echo "<br>";

if ($valorAleatorio == $valorRecibido) {
echo "Numero acertado ♦ ";
echo $valorRecibido;
} else {
if ($valorRecibido < $valorAleatorio) {
echo "Numero incorrecto • ";
echo "El valor es menor";
echo '<a href="./ejercicio05.html" title="Ir la página anterior"> <br> Volver a la 1º Pagina </a>';
} else if ($valorRecibido > $valorAleatorio) {
echo "Número incorrecto • ";
echo "El valor es mayor";
echo '<a href="./ejercicio05.html" title="Ir la página anterior"> <br> Volver a la 1º Pagina </a>';
// header("Location: ejercicio05.html");
}
}
echo "</tr>";
echo "</table>";
?>

</body>
</html>

------------------------------------------
Hoja de estilos CSS - para darle formato a la salida "muy básico"
/*
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
*/
/*
Created on : 12-nov-2015, 1:04:41
Author : TED
*/

/* estilo */

table.nuevo1 {
width: auto;
border: 1px solid #000;
}
th, td {
width: auto;
text-align: center;
border: 2px solid #000;
padding: 0.3em;
caption-side: bottom;
}
caption {
padding: 0.3em;
color: #fff;
background: #000;
}
th {
background: #eee;
}

/**/
table.nuevo2 {
width: auto;
border: 1px solid #000;
}
th, td {
width: auto;
text-align: center;
border: 1px solid #000;
padding: 0.3em;
caption-side: bottom;
}
caption {
padding: 0.3em;
color: #fff;
background: #000;
}
th {
background: #eee;
}

-------------------
El problema reside en que cada ejecución del archivo php , cuando este vuelve al formulario y se introduce un nuevo valor para adivinar el nº secreto que tiene creado el fichero php , ese en si genera un nuevo , lo cual no es lo que se busca

// 1º Vez
1 // valor que tiene generado el archivo php
3 // valor que he introducido yo

Número incorrecto • El valor es mayor
Volver a la 1º Pagina
Número Secreto
Numero Numero Aleatorio : 1

// 2º Vez , el valor
0 // valor que tiene generado el archivo php
3 // valor que he introducido yo

Número incorrecto • El valor es mayor
Volver a la 1º Pagina
Número Secreto
Numero Numero Aleatorio : 0

Quisiera avisar de que he puesto un nº aleatorio entre 0 y 1 para evitar tener introducir muchos valores e ir directamente al grano.

- Lo único que necesito saber es como mantener el 1º numero aleatorio constante en cada nueva vuelva del archivo formulario al fichero php , que no se genere un nuevo número aleatorio.

Gracias por todo
  #4 (permalink)  
Antiguo 15/11/2015, 07:25
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 9 años, 5 meses
Puntos: 263
Respuesta: Guardar Valor de Session

trabajalo con mysql y la variable de sesion, es decir guarda en la base el numero generado, el usuario que juega y la fecha, de esa manera puedes verificar que usuario esta jugando y comparar lo que ingresa con lo que tiene almacenado en la base de datos si lo adivina borras el registro e inicia de nuevo
__________________
[email protected]
HITCEL
  #5 (permalink)  
Antiguo 15/11/2015, 08:42
Avatar de WeTrust  
Fecha de Ingreso: noviembre-2015
Ubicación: En una habitación muy pequeña
Mensajes: 7
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Guardar Valor de Session

Me han comentado que lo haga con la función session_start()
Sin base de datos ya que son ejemplos sencillos e introductorios.

Lo único que desconozco es como trabajar con la función session_start() para poder almacenar la variable que genere un numero aleatorio por medio ran(min,max) y se quede almacenado en el archivo php en respectivas llamadas.
  #6 (permalink)  
Antiguo 15/11/2015, 08:51
Avatar de Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 13 años, 7 meses
Puntos: 261
Respuesta: Guardar Valor de Session

Cita:
Iniciado por WeTrust Ver Mensaje
Me han comentado que lo haga con la función session_start()
Sin base de datos ya que son ejemplos sencillos e introductorios.

Lo único que desconozco es como trabajar con la función session_start() para poder almacenar la variable que genere un numero aleatorio por medio ran(min,max) y se quede almacenado en el archivo php en respectivas llamadas.
Es para mantener la sesión al cambiar de páginas. Simplemente lo añades antes del código.
Código PHP:
<?php
session_start
();
// resto del código
Nota: no debe tener ningún echo antes de session_start() si no te lanzará errores.

Como siempre, el resto de información la puedes encontrar en:
http://php.net/manual/es/function.session-start.php

Saludos,
__________________
Todos agradeceremos que pongas el código en su respectivo Highlight
  #7 (permalink)  
Antiguo 15/11/2015, 10:37
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 10 meses
Puntos: 69
Respuesta: Guardar Valor de Session

Intenta con este código a ver si te funciona, analízalo y adáptalo a lo que necesites:

Código PHP:
Ver original
  1. <?php
  2.     session_start();
  3. ?>
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <title> Title </title>
  8. <meta charset="UTF-8">
  9. <link rel="stylesheet" type="text/css" href="micss.css">
  10. </head>
  11. <body>
  12. <?php
  13.  
  14. function generarValor() {
  15.     return $var = rand(0, 1);
  16. }
  17.  
  18. if (!isset($_SESSION['valoraleatorio'])) $_SESSION['valoraleatorio'] = generarValor();
  19. if (isset($_REQUEST['numero1']))
  20. {
  21.     $valorRecibido = $_REQUEST['numero1'];
  22.     $valorAleatorio = $_SESSION['valoraleatorio'];
  23.     echo "<br>";
  24.     echo $valorAleatorio;
  25.     echo "<br>";
  26.     echo $valorRecibido;
  27.     echo "<br>";
  28.     //
  29.     echo "<table class ='nuevo2'>";
  30.     echo "<th colspan='2' class='nuevo1'> Número Secreto </th>";
  31.     echo "<tr>";
  32.     echo "<td> Numero </td>";
  33.     echo "<td> Numero Aleatorio : " . $valorAleatorio . "</td>";
  34.     echo "<br>";
  35.    
  36.     if ($valorAleatorio == $valorRecibido) {
  37.     echo "Numero acertado ♦ ";
  38.     echo $valorRecibido;
  39.     $_SESSION['valoraleatorio'] = generarValor();
  40.     } else {
  41.     if ($valorRecibido < $valorAleatorio) {
  42.     echo "Numero incorrecto • ";
  43.     echo "El valor es menor";
  44.     echo '<a href="./ejercicio05.html" title="Ir la página anterior"> <br> Volver a la 1º Pagina </a>';
  45.     } else if ($valorRecibido > $valorAleatorio) {
  46.     echo "Número incorrecto • ";
  47.     echo "El valor es mayor";
  48.     echo '<a href="./ejercicio05.html" title="Ir la página anterior"> <br> Volver a la 1º Pagina </a>';
  49.     // header("Location: ejercicio05.html");
  50.     }
  51.     }
  52.     echo "</tr>";
  53.     echo "</table>";
  54. }
  55. ?>
  56.  
  57. </body>
  58. </html>
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #8 (permalink)  
Antiguo 15/11/2015, 11:19
Avatar de WeTrust  
Fecha de Ingreso: noviembre-2015
Ubicación: En una habitación muy pequeña
Mensajes: 7
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Guardar Valor de Session

Me han comentado que lo haga con la función session_start()
Sin base de datos ya que son ejemplos sencillos e introductorios.

Lo único que desconozco es como trabajar con la función session_start() para poder almacenar la variable que genere un numero aleatorio por medio ran(min,max) y se quede almacenado en el archivo php en respectivas llamadas.

Buenas
He probado con session_start() y con session_name() , he probado a utilizar SID y he copiado , modificado el ejemplo que viene en la pagina oficial de PHP sobre session_start() pero me sigue cambiando el valor del numero aleatorio , ya no se que más inventar , yo siempre me apoyo en la guia oficial de PHP pero o no lo veo o no han puesto un ejemplo tan concreto como el que os comento.

Voy a seguir peleandome con el codigo
  #9 (permalink)  
Antiguo 15/11/2015, 11:20
Avatar de WeTrust  
Fecha de Ingreso: noviembre-2015
Ubicación: En una habitación muy pequeña
Mensajes: 7
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Guardar Valor de Session

Cita:
Iniciado por chronos682 Ver Mensaje
Intenta con este código a ver si te funciona, analízalo y adáptalo a lo que necesites:

Código PHP:
Ver original
  1. <?php
  2.     session_start();
  3. ?>
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <title> Title </title>
  8. <meta charset="UTF-8">
  9. <link rel="stylesheet" type="text/css" href="micss.css">
  10. </head>
  11. <body>
  12. <?php
  13.  
  14. function generarValor() {
  15.     return $var = rand(0, 1);
  16. }
  17.  
  18. if (!isset($_SESSION['valoraleatorio'])) $_SESSION['valoraleatorio'] = generarValor();
  19. if (isset($_REQUEST['numero1']))
  20. {
  21.     $valorRecibido = $_REQUEST['numero1'];
  22.     $valorAleatorio = $_SESSION['valoraleatorio'];
  23.     echo "<br>";
  24.     echo $valorAleatorio;
  25.     echo "<br>";
  26.     echo $valorRecibido;
  27.     echo "<br>";
  28.     //
  29.     echo "<table class ='nuevo2'>";
  30.     echo "<th colspan='2' class='nuevo1'> Número Secreto </th>";
  31.     echo "<tr>";
  32.     echo "<td> Numero </td>";
  33.     echo "<td> Numero Aleatorio : " . $valorAleatorio . "</td>";
  34.     echo "<br>";
  35.    
  36.     if ($valorAleatorio == $valorRecibido) {
  37.     echo "Numero acertado ♦ ";
  38.     echo $valorRecibido;
  39.     $_SESSION['valoraleatorio'] = generarValor();
  40.     } else {
  41.     if ($valorRecibido < $valorAleatorio) {
  42.     echo "Numero incorrecto • ";
  43.     echo "El valor es menor";
  44.     echo '<a href="./ejercicio05.html" title="Ir la página anterior"> <br> Volver a la 1º Pagina </a>';
  45.     } else if ($valorRecibido > $valorAleatorio) {
  46.     echo "Número incorrecto • ";
  47.     echo "El valor es mayor";
  48.     echo '<a href="./ejercicio05.html" title="Ir la página anterior"> <br> Volver a la 1º Pagina </a>';
  49.     // header("Location: ejercicio05.html");
  50.     }
  51.     }
  52.     echo "</tr>";
  53.     echo "</table>";
  54. }
  55. ?>
  56.  
  57. </body>
  58. </html>
1000 gracias por el código , ahora mismo lo uso , lo pruebo y modifico !!

PERFECTO !!! 1 millón de gracias , me he leído la guía , le he invertido muchísimas horas , no quería quedarme con la duda , voy a estudiarme el código
para ver como funciona las partes nuevas , si quieres hacerme alguna aclaración sobre su funcionamiento , sera recibida como un tesoro.

Última edición por WeTrust; 15/11/2015 a las 11:35 Razón: Para no llenar la pantalla de post innecesarios , reedito este para dar las gracias
  #10 (permalink)  
Antiguo 15/11/2015, 12:24
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 10 meses
Puntos: 69
Respuesta: Guardar Valor de Session

Código PHP:
Ver original
  1. <?php
  2.     session_start(); //Activa las sesiones en la página
  3.     //siempre debe ir al principio de todo
  4. ?>
  5. <!DOCTYPE html>
  6. <html>
  7. <head>
  8. <title> Title </title>
  9. <meta charset="UTF-8">
  10. <link rel="stylesheet" type="text/css" href="micss.css">
  11. </head>
  12. <body>
  13. <?php
  14.  
  15. function generarValor() {
  16.     return $var = rand(0, 1);
  17. }
  18.  
  19. //Comprueba si ya se ha asignado un valor aleatorio a la variable de sesión
  20. //si no se ha asignado le asigna uno nuevo
  21. if (!isset($_SESSION['valoraleatorio'])) $_SESSION['valoraleatorio'] = generarValor();
  22. //Comprueba si el usuario ingresó algún número
  23. if (isset($_REQUEST['numero1']))
  24. {
  25.     $valorRecibido = $_REQUEST['numero1'];
  26.     $valorAleatorio = $_SESSION['valoraleatorio'];
  27.     echo "<br>";
  28.     echo $valorAleatorio;
  29.     echo "<br>";
  30.     echo $valorRecibido;
  31.     echo "<br>";
  32.     //
  33.     echo "<table class ='nuevo2'>";
  34.     echo "<th colspan='2' class='nuevo1'> Número Secreto </th>";
  35.     echo "<tr>";
  36.     echo "<td> Numero </td>";
  37.     echo "<td> Numero Aleatorio : " . $valorAleatorio . "</td>";
  38.     echo "<br>";
  39.    
  40.     if ($valorAleatorio == $valorRecibido) {
  41.     echo "Numero acertado ♦ ";
  42.     echo $valorRecibido;
  43.     //si el usuario adivinó el número se asigna un nuevo número aleatorio a la variable de sesión para que comience un nuevo juego
  44.     $_SESSION['valoraleatorio'] = generarValor();
  45.     } else {
  46.     if ($valorRecibido < $valorAleatorio) {
  47.     echo "Numero incorrecto • ";
  48.     echo "El valor es menor";
  49.     echo '<a href="./ejercicio05.html" title="Ir la página anterior"> <br> Volver a la 1º Pagina </a>';
  50.     } else if ($valorRecibido > $valorAleatorio) {
  51.     echo "Número incorrecto • ";
  52.     echo "El valor es mayor";
  53.     echo '<a href="./ejercicio05.html" title="Ir la página anterior"> <br> Volver a la 1º Pagina </a>';
  54.     // header("Location: ejercicio05.html");
  55.     }
  56.     }
  57.     echo "</tr>";
  58.     echo "</table>";
  59. }
  60. ?>
  61.  
  62. </body>
  63. </html>
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]

Etiquetas: variablesphp
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:20.