Autor Tema: Sesiones en PHP ($_SESSION) variables al cambiar de página o recargar se borran  (Leído 2843 veces)

jose1996vs

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 9
    • Ver Perfil
Hola,

Tengo un problema, quiero usar variables de sesión en php, y se crean bien y tal, la cosa es que al cambiar de página o recargarla, se borran. ¿Qué puedo hacer?

Gracias
« Última modificación: 15 de Junio 2017, 21:11 por Ogramar »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Sesiones en PHP ($_SESSION)
« Respuesta #1 en: 16 de Mayo 2017, 13:42 »
Hola jose1996vs

Posiblemente sea porque no añades session_start(); en el inicio de cada página.

Código: [Seleccionar]
<?php
session_start
();
?>
Es importante que se incluya en el inicio para un correcto funcionamiento.

Saludos. ;D

jose1996vs

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 9
    • Ver Perfil
Re:Sesiones en PHP ($_SESSION)
« Respuesta #2 en: 17 de Mayo 2017, 09:23 »
Hola,

qué va, eso lo pongo por supuesto nada más empezar la página. El problema es al dar a recargar, o irse a otra pantalla y luego volver, que desaparece. Se me ocurre que quizás el problema sea que creo la sesión desde una función de javascript. Te muestro el código (y gracias por la respuesta). La página es un carro de la compra de la típica tienda online.

Código: [Seleccionar]
//Añado a la cesta con este botón:
<button onclick="anadiralacesta(document.querySelector('#cesta'))"
            class="botonanadir" id="botondeanadiralacesta">Añadir</button>

//Parte de la función de añadir a la cesta, el resto hace cosas que no tienen que ver con añadir ni crear variables, por eso te lo ahorro:
function anadiralacesta(divcestadeofertas) {
    'use strict';
    var divdecadaoferta = document.createElement("div");
    var titulodelaoferta = document.getElementById('puesto').textContent;
    var puestoanadido = document.createTextNode(titulodelaoferta);
    divdecadaoferta.className = "ofertaenlacesta";
    divdecadaoferta.appendChild(puestoanadido);
    divcestadeofertas.appendChild(divdecadaoferta);
    var botonelimi = document.createElement('div');
    var textobotonelimi = document.createTextNode("Eliminar");
    botonelimi.className = "aspectobotoneliminar";
    botonelimi.appendChild(textobotonelimi);
    divdecadaoferta.appendChild(botonelimi);
    divcestadeofertas.appendChild(divdecadaoferta);
    botonelimi.onclick = removeNodo;
    [...]
    //Aquí me comunico con un archivo php para crear las cookies
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
            var contenidosRecibidos = xmlhttp.responseText;
        }
    };
    xmlhttp.open("GET", "backendcesta.php?oferta=" + titulodelaoferta);
    xmlhttp.send();
}


//Este es el archivo backendcesta.php
Código: [Seleccionar]

<?php
session_start
();
$ofertarecibida=$_REQUEST["oferta"];
$_SESSION["nombredelpuestoseleccionado"]=$ofertarecibida;
echo 
$_SESSION["nombredelpuestoseleccionado"];


Bienesto se hace en una pantallay el resultado de todo esto es que se añade el producto al carrito y aparece también un botón de eliminarpara que entiendas un poco qué hace esoEl problema es que al darle a recargar la páginauna recarga completamente normalpues se va del carrito el productoy tambiénsi vuelvo a la pantalla de inicioy luego vuelvo a esta pantalla de añadir a la cestaya ha desaparecido la sesiónEspero que hayas entendido todo.
« Última modificación: 17 de Mayo 2017, 21:52 por pedro,, »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:Sesiones en PHP ($_SESSION)
« Respuesta #3 en: 17 de Mayo 2017, 19:09 »
Si cambias entre páginas donde incluyes session_start() no debe perderse la información que contengan las variables de sesión, si actualizas la página es lógico que se puedan perder los datos. En el código javascript tienes comentada una línea donde dice que creas las cookies, pero no veo que sea así, lo que haces es recuperar el valor de una variable de sesión, pero no creas las cookies en ningún sitio.

Saludos. ;D

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".