Sto realizzando un sito e-commerce e succede una cosa alquanto strana :

in una classe setto la sessione ['cart'] :

Codice PHP:
public function addCart($pId$qta){ 
$pId trim($pId); $pId $this->mMysqli->real_escape_string($pId); 
$result parent::SympliQuery('SELECT * FROM prodotti WHERE id = "'.$pId.'"'); 
$product $result->fetch_assoc(); 
if (
$product['offerta']){ 
$prezzoCadauno $product['prezzo_offerta']; 
}else{ 
$prezzoCadauno $product['prezzo']; 

$cart = (isset($_SESSION['cart'])) ? $_SESSION['cart'] : array();
if (
array_key_exists($pId$cart)){ 
$cart[$pId]['qta'] = ($cart[$pId]['qta'] + $qta); 
}else{ 
$cart[$pId]['qta'] = $qta

$cart[$pId]['nome'] = $product['nome']; 
$cart[$pId]['confezione'] = $product['confezione']; 
$cart[$pId]['img'] = $product['img_thumb']; 
$cart[$pId]['pId'] = $pId
$cart[$pId]['prezzoCadauno'] = $prezzoCadauno
$cart[$pId]['prezzoSingoloTotale'] = ($prezzoCadauno $cart[$pId]['qta']); $_SESSION['cart'] = $cart
header('Location: shopping_cart.php'); 

Tutto funziona benissimo.
Ora in alto a destra (vicino al menu) faccio comaparire l'icona del carrello coi var prodotti :

Codice PHP:
public function mostraBarCart($altFlag$titleFlag$altCart$titleCart){ 
echo 
'<div id="bar_cart" class="mini_text"> 
<div id="utente"> 

Utente :</p> </div> 
<div id="lingua"> 

Lingua :</p> [img]images/italy.gif[/img] </div> 
<div id="mini_cart"> [url="shopping_cart.php"][img]images/cart.gif[/img][/url] <p class="link_text">[url="shopping_cart.php"]CARRELLO SPESA[/url]</p>'
$prezzoTot 0$totProdotti 0;
 if (isset(
$_SESSION['cart'])){ 
foreach (
$_SESSION['cart'] as $id_prodotto){ 
$prezzoTot += $id_prodotto['prezzoSingoloTotale']; $totProdotti += $id_prodotto['qta']; 

} echo 
'<span class="mini_text">[url="shopping_cart.php"]'.$totProdotti.' prodotti[/url] - '.$prezzoTot.' &euro;</span>'; echo '</div> </div>'; } 
Anche questo funziona benissimo.
N.B. la condizione if (isset($_SESSION['cart'])) una volta che aggiungo prodotti al carrello risulta giustamente true e mi mostra cosi quanti prodotti ho nel carrello coi relativi prezzi.

Il problema arriva dopo e cioè quando un utente esegue il login io voglio che se è settata la sessione cart deve essere indirizzato alla pagina checkout:

Codice PHP:
public function VerifyLogin(){ 
$email = (isset($_POST['email'])) ? $this->securityData($_POST['email']) : '';
$pwd = (isset($_POST['pwd'])) ? $this->securityData($_POST['pwd']) : ''
if (empty(
$email) || empty($pwd)){ header('Location: login.php?failed=1'); 
}else{ 
$result parent::SympliQuery('SELECT id, ver FROM users WHERE email = "'.$email.'" AND pwd = "'.md5($pwd).'"'); 
$numResult $result->num_rows$ver $result->fetch_assoc(); 
if (
$numResult != 1){
 
header('Location: login.php?failed=2'); 
}else{ 
if (!
$ver['ver']){ 
header('Location: login.php?failed=3'); 
}else{ 
$_SESSION['auth'] = 1$_SESSION['user_id'] = $ver['id']; 
if (isset(
$_SESSION['cart'])){ 
header('Location: checkout.php'); 
}else{ 
//mi esegue questo 





Una volta loggato (l'ultimo pezzo della funzione) anzichè mandarmi alla pagina checkout esegue il blocco else come se la sessione cart non fosse settata. Invece è settata perchè nel famoso carrello in alto a destra risultano prodotti.

Come mai, secondo voi, in una classe l'istruzione if (isset($_SESSION['cart'])) viene considerata true mentre in un'altra no?

Grazie