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
-
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
-
Hola jose1996vs
Posiblemente sea porque no añades session_start(); en el inicio de cada página.
<?php
session_start();
?>
Es importante que se incluya en el inicio para un correcto funcionamiento.
Saludos. ;D
-
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.
//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
<?php
session_start();
$ofertarecibida=$_REQUEST["oferta"];
$_SESSION["nombredelpuestoseleccionado"]=$ofertarecibida;
echo $_SESSION["nombredelpuestoseleccionado"];
Bien, esto se hace en una pantalla, y el resultado de todo esto es que se añade el producto al carrito y aparece también un botón de eliminar, para que entiendas un poco qué hace eso. El problema es que al darle a recargar la página, una recarga completamente normal, pues se va del carrito el producto, y también, si vuelvo a la pantalla de inicio, y luego vuelvo a esta pantalla de añadir a la cesta, ya ha desaparecido la sesión. Espero que hayas entendido todo.
-
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