Programación Web y Scripting > PHP

 Se pisa variable de sesion

(1/1)

sergio2009:
Hola, soy principiante en PHP, y estoy creando un carrito de compras muy básico.

Tengo un "index.php", donde hago un include_once que crea la variable de sesión:
include_once('carrito_include.php');
include('carrito_ver.php');
También tengo un link para agregar un producto:
<A HREF="carrito_agregar.php?producto=0120">Agregar al carrito</A>


En "carrito_include.php" creo la variable de sesión (si es que no existe):
<?php
session_start();
if(!isset($SESSION['productos']))
{
   $_SESSION['productos'] = array();
}
else
{
   echo "Ya está creada.<br>";
}
?>

En "carrito_ver.php" hago el include_once y muestro el estado del carrito:
<?php
include_once('carrito_include.php');
$cantidad = count($_SESSION['productos']);
if($cantidad > 0)
{
   ?>
   Hay <B><?=$cantidad;?></B> productos(s) en su carrito.<BR>
   <A href="carrito_checkout.php">Terminar la compra</A> |
   <A href="carrito_vaciar.php">Vaciar</A><BR>
   <?
}
else
{
   ?>
   Su carrito está vacío.<BR>
   <BR>
   <?
}
?>

Finalmente en "carrito_agregar", agrego el producto y vuelvo al index con el comando "header":
<?php
include_once('carrito_include.php');
$destino = $_SERVER['HTTP_REFERER'];
if($destino != "")
{
   $producto_nuevo = $_GET['producto'];
   $cantidad_productos = count($_SESSION['productos']);
   $_SESSION['productos'][$cantidad_productos] = $producto_nuevo;
   header('Location:' . $destino);
}
else
{
   echo "Error de llamada al script.";
}
?>

El problema es que cada vez que agrego un item y "vuelvo" al index, se muestra que el carrito está vacío (esto es parte de la llamada que hago en index a "carrito_ver.php").
Me da la sensación que al "volver" al index está creando nuevamente la variable de sesión. ¿Puede ser que sea así? Si alguien me ayuda se lo agradecería mucho.

DriverOp:
Pon unas cuantas llamadas a
[php:15c1gif0] var_dump($_SESSION); [/php:15c1gif0]
En lugares clave para que sepas qué está pasando con las sesiones.

shadow_rev:
Aquí veo algo raro

--- Código: PHP ---if(!isset($SESSION['productos'])) Pregunta capciosa: No debería ser $_SESSION (con el _ entre el $ y SESSION) ??

:suerte:

sergio2009:
Efectivamente era lo del guión bajo. Un detalle pero importante jeje. Gracias a ambos por sus respuestas.  ^_^

Navegación

[0] Índice de Mensajes

Ir a la versión completa