$_SESSION es un array .. el cual vas ingresando tus variables y sus valores a lo largo de tu script .. cuando cambias de script (redireccionas a otro .. etc) ahí quedan registradas tus variables. NO es como cuando usas "session_register()" que le dices al principio o donde quieras en tu script "registra tal variable" y cuando le das valor ya queda registrada. Aquí .. con el uso del array $_SESSION .. se le dá valor cuando corresponda como si de cualquier otra variable se tratase ...
Código PHP:
session_start();
$producto=$_SESSION['producto'];
$cantidad_prod=$_SESSION['cantidad_prod'];
$elementos=count($producto);
$id=$_POST["prod"];
$cant=$_POST["cant"];
$elementos++;
//Hago este while para que agregue el nuevo indice en algun lugar vacio o uno nuevo al final
while($producto["$elementos"]!="")
{
$elementos++;
}
$producto["$elementos"]=$id;
$cantidad_prod["$elementos"]=$cant;
// y como te comenté .. si lo usas tal cual deberías volver hacer:
$_SESSION['producto'] = $producto;
$_SESSION['cantidad_prod'] = $cantidad_prod;
?>
Pero .. para todo esto es más sencillo y claro hacer lo que propong en el dichoso link que te dejé sobre el mensaje que hago referencia:
Código PHP:
// aquí leemos nuestro carrito
session_start();
if (isset($_SESSION['mi_carrito'])){
$carrito=$_SESSION['mi_carrito'];
} else {
$carrito=array();
// trabajar con $carrito ...
//y al final (parece que se me quedó en el tintero en el ejemplo que dí aquella vez)
// registramos nuestra "variable" de sesión si es que alteramos sus valores (como es tu caso)
$_SESSION['mi_carrito']=$pedido;
// y redireccionar hacia donde corresponda: por un link .. o header("location ...") .. etc
Un saludo,