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 10 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 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda

Domande simili