Hola David.
 
Simplemente...  




 
 
 Era eso !!  Supongo que son cosas del globals en OFF, ya que he aprendido con él en ON, y no sé muy bien en qué partes de los script se ve afectado....  
Ha quedado así:  
 Código PHP:
    <?
  include ('book_sc_fns.php');
  // El carrito de compra necesita sesiones, así que iniciar una.
  session_start();
  
  $new = $_GET['new'];
  $cart = $_SESSION['cart'];
  $items = $_SESSION['items'];
  $total_price = $_SESSION['total_price'];
  
 
  if($new)
  {
    //nuevo artículo seleccionado
    if(!isset($cart))
    {
      $_SESSION["cart"];
      $_SESSION["items"] = 0;
      $_SESSION["total_price"] = "0.00";
    }
    if($cart[$new])
     { $cart[$new]++; }
    else
      { $cart[$new] = 1; }
      
    $total_price = calculate_price($cart);
    $items = calculate_items($cart);
 
  }    
  Y en la última lkinea del script, he vuelto a poner:  
 Código PHP:
    $_SESSION['cart'] = $cart;
$_SESSION['items'] = $items;
$_SESSION['total_price'] = $total_price; 
    
  Si no ponía las tres variables de sesión, no se actualizaba bien el contenido del carro que secarga en la cabecera...... 
CONFIRMAME por favor esto:   Con globals OFF, hay que "llamar" a las variables de sesión al principio del script con   
 Código PHP:
    $cart = $_SESSION['cart']; 
    
  Y para que las modificaciones que sufra la variable durante el script queden "grabadas" en ella, hay que poner al final  
 Código PHP:
    $_SESSION['cart'] = $cart; 
    
  ¿Es así? Curioso...
 
 
MILLONES DE GRACIAS, DAVID.  
No sé si por casualidad estás en Valencia o alrededores (y si no lo mismo da, lo digo por cercanía), pero cuando quieras pegarte un buen almuerzo, sólo tienes que decirmelo, y elegir el sitio (en Valencia, claro 

).  
Un saludo