1
C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más / Re:Sesiones en PHP ($_SESSION)
« 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.
//Este es el archivo backendcesta.php
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"];
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.