Non capisco come funzionano le sessioni...

Salve a tutti ragazzi, ultimamente mi sono messo a picchiare la testa con le sessioni!

Voglio imparare come si puo' mantenere lo stato di una connessione passando di pagina in pagina; quindi ho creato un carrello della spesa per vedere se riuscivo a far funzionare il tutto, ma non riesco a capire come mai il mio carrello risulta sempre vuoto!

Ho modificato il file php.ini in questi punti come suggerito in un tutorial:

  • session.save_handler
  • session.save_path
  • session.use_trans_sid

Le pagine da me provate sono:

<?php
   session_start();
   if(!isset($_SESSION['cart']))
   {
      $_SESSION['cart'] = array();
   }
   if(isset($_GET['buy']))
   {
      //Aggiungie l'oggetto alla fine dell'array $_SESSION['cart']
      $_SESSION['cart'][] = $_GET['buy'];
      header('location: '.$_SERVER['PHP_SELF'].'?'.SID);
      exit();
   }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
   <title>Catalogo prodotti</title>
   <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<p>Il tuo carrello contiene <?php echo count($_SESSION['cart']); ?> oggetti.</p>
<p><a href="cart.php">Visualizza il tuo cartello</a></p>
<?php
   $items = array(
            'Dizionario Italiano-Inglese',
            'HTML/PHP',
            'La signora in Giallo in azione',
            'Nine Days - So Upply Unsatisfed');
   $prices = array(33.45,20,12,15);
?>
<table border="1">
   <thead>
      <tr>
         <th>Descrizione oggetto</th>
         <th>Prezzi</th>
      </tr>
   </thead>
   <tbody>
   <?php
      for($i = 0; $i < count($items); $i++)
      {
         echo '<tr>';
         echo '<td>' . $items[$i] . '</td>';
         echo '<td>&euro;' .number_format($prices[$i], 2) . '</td>';
         echo '<td><a href="'.$_SERVER['PHP_SELF'].'?buy='.$i.'">Compra</a></td>';
         echo '</tr>';
      }
   ?>
   </tbody>
</table>
<p>Tutti prezzi sono in euro immaginari</p>
</body>
</html>

Questo e' il file carlist.php, che serve a fare la lista degli oggetti e dovrebbe tenere il conteggio del carrello...

<?php 
   session_start();
   if(!isset($_SESSION['cart']))
   {
      $_SESSION['cart'] = array();
   }
   if(isset($_GET['empty']))
   {
      //Svuoto l'array $_SESSION['cart']
      unset($_SESSION['cart']);
      header('location: '.$_SERVER['PHP_SELF'].'?'.SID);
      exit();
   }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
   <title>Carrello della spesa</title>
   <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<h1>Il tuo carrello della spesa</h1>
   <?php
      $items = array(
               'Dizionario Italiano-Inglese',
               'HTML/PHP',
               'La signora in Giallo in azione',
               'Nine Days - So Upply Unsatisfed');
      $prices = array(33.45,20,12,15);   
   ?>
<table border="1">
   <thead>
      <tr>
         <th>Descrizione oggetto</th>
         <th>Prezzo</th>
      </tr>
   </thead>
   <tbody>
      <?php
         $total = 0;
         for($i =0; $i < count($_SESSION['cart']); $i++)
         {
            echo '<tr>';
            echo '<td>' .$items[$_SESSION['cart'][$i]].'</td>';
            echo '<td align="right">&euro;';
            echo number_format($prices[$_SESSION['cart'][$i]], 2);
            echo '</td>';
            echo '</tr>';
            $total = $total + $prices[$_SESSION['cart'][$i]];
         }
      ?>
   </tbody>
   <tfoot>
      <tr>
         <th align="right">Totale</th><br />
         <th align="right">&euro;<?php echo number_format($total, 2); ?></th>
      </tr>
   </tfoot>
</table>
<p><a href="cartlist.php">Continua Lo shopping</a> oppure <a href="<?php echo $_SERVER['PHP_SELF']; ?>?empty=1">Svuota il tuo carrello</a></p>
</body>
</html>

E questa e' la pagina che dovrebbe sviluppare il tutto... Ma nn funge!

E' tt qua, nn ci sono database nn c'e' altro, ma perche' nn deve funzionare???

inviato 9 anni fa
Pr0v4
X 0 X

prova a disabilitare il session.use_trans_sid

comunque per provare il funzionamento delle sessioni basta un piccolo script, da richiamare pił volte di seguito:

<?php
session_start();
if(!isset($_SESSION['contatore'])) {
   $_SESSION['contatore'] = 0;
}
$_SESSION['contatore'] ++;
echo $_SESSION['contatore'];
?>

anzi forse basta questo:

<?php
session_start();
echo $_SESSION['contatore']++;
?>

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda

Domande simili