Foros del Web » Programando para Internet » PHP »

Problema al guardar los datos en una sesion

Estas en el tema de Problema al guardar los datos en una sesion en el foro de PHP en Foros del Web. Tengo un problema al guardar los datos en una sesión, si añado un nuevo objecto me lo muestra pero si quiero añadir otro al recargar ...
  #1 (permalink)  
Antiguo 29/01/2019, 14:57
 
Fecha de Ingreso: mayo-2015
Mensajes: 30
Antigüedad: 3 años, 11 meses
Puntos: 0
Problema al guardar los datos en una sesion

Tengo un problema al guardar los datos en una sesión, si añado un nuevo objecto me lo muestra pero si quiero añadir otro al recargar la página desaparace ese objecto añadido.

Tengo hecho lo siguiente :

Código PHP:
Ver original
  1. <?php session_start();
  2.  
  3. include_once("alumno.php");
  4.  
  5. class Secretaria{
  6.  
  7.     public $alumnos = array();
  8.  
  9.     public function __construct(){
  10.  
  11.     }
  12.  
  13.     public function cargarDatosAlumno(){
  14.  
  15.         return isset($_SESSION['alumno']) ? $_SESSION['alumno'] : new Alumno();
  16.  
  17.     }
  18.  
  19.     //Guarda los datos del alumno en la sesion
  20.  
  21.     function guardarDatosAlumno($alumno){
  22.  
  23.         $_SESSION['alumno'] = $alumno;
  24.  
  25.     }
  26.  
  27. }
  28.  
  29. $secretaria = new Secretaria();
  30.  
  31. // Cargamos los nuevos datos al recargar.
  32.  
  33. $secretaria->cargarDatosAlumno();
  34.  
  35.  
  36. // Añadimos Alumnos.
  37.  
  38. $alumno = new Alumno($_POST['nombre'],$_POST['apellido'],$_POST['dni']);
  39.  
  40. array_push($secretaria->alumnos,$alumno);
  41.  
  42.  
  43. //Guardamos los datos en la session.
  44.  
  45. $secretaria->guardarDatosAlumno($alumno);
  46.  
  47. }
  #2 (permalink)  
Antiguo 30/01/2019, 19:06
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 9.900
Antigüedad: 10 años, 8 meses
Puntos: 2156
Respuesta: Problema al guardar los datos en una sesion

No puedes almacenar un objeto directamente en sesión, en todo caso, serializa para guardar un array y desserializa para recuperar, por ejemplo:

Código PHP:
Ver original
  1. // Guardar datos en sesión:
  2. $_SESSION['alumno'] = serialize($alumno);
  3.  
  4. // Recuperar datos:
  5. $alumno = unserialize($_SESSION['alumno']);

En teoría, al serializar, ejecutas el método mágico __sleep de la clase, creando un array y, al desserializar se ejecuta __wakeup, restableciendo el objeto original.

Más info en: http://php.net/manual/es/language.oop5.magic.php
__________________
- León, Guanajuato
- GV-Foto



La zona horaria es GMT -6. Ahora son las 22:00.