Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: jose1996vs en 16 de Mayo 2017, 12:08

Título: Sesiones en PHP ($_SESSION) variables al cambiar de página o recargar se borran
Publicado por: jose1996vs en 16 de Mayo 2017, 12:08
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
Título: Re:Sesiones en PHP ($_SESSION)
Publicado por: pedro,, 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
Título: Re:Sesiones en PHP ($_SESSION)
Publicado por: jose1996vs 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.
Título: Re:Sesiones en PHP ($_SESSION)
Publicado por: pedro,, 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