Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Carrello. Pagina che perde i valori passati via URL

    Salve a tutti,

    sto realizzando un carrello in php. Il codice l'ho assemblato io pescando un po' dal libro di Kevin Yank e un po' chgiedendo aiuto qua sul forum.

    La pagina prodotto che ho realizzato (ora contiene solo il meccanismo per aggiungere il prodotto al carrello) è la seguente:

    Codice PHP:
    <?php
    session_start
    ();
    if (!isset(
    $_SESSION['cart'])) {
      
    $_SESSION['cart'] = array();
    }
    if (isset(
    $_GET['buy'])) {
      
    // Add item to the end of the $_SESSION['cart'] array
      
    $IDaggiungi $_GET['buy'];
      
    $_SESSION['cart'][$IDaggiungi]++;
      
    header('location: ' $_SERVER['PHP_SELF'] . '?' SID);
      exit();
    }

    $prod_corrente $_GET['id'];

    ?>
    <head>
    <title>Product</title>
    </head>
    <body>


    Your shopping cart contains <?php echo count($_SESSION['cart']); ?> items.</p>


    [url="cartMIO.php"]View your cart[/url]</p>
    <table border="1">
      <thead>
        <tr>
          <th>Item Description</th>
          <th>Price</th>
        </tr>
      </thead>
      <tbody>
    <?php
            
    echo '<tr>';
            echo 
    '<td>' $_SESSION['cart'][$prod_corrente] . '</td>';
            echo 
    '<td>prod' $prod_corrente '</td>';
            echo 
    '<td>prezzo tot</td>';
            echo 
    '<td>[url="' $_SERVER['PHP_SELF'] . '?id=' $prod_corrente '&buy=' $prod_corrente '"]Buy[/url]</td>';
            echo 
    '</tr>';
    ?>
      </tbody>
    </table>


    All prices are in imaginary dollars.</p>
    </body>
    </html>
    Se voglio la pagina col prodotto 1 accedo ad essa in questo modo:
    www.miodominio.it/prod.php?id=1

    Ora, badate solo a quello che è il collegamento visualizzato nella status bar quando sposto il mouse su "buy". Mi visualizza l'URL con due parametri (id e buy) contenenti l'identificativo del prodotto corrente, in questo caso 1.
    Cliccando però su buy, la pagina che si apre (cioé la stessa che si ricarica) contiene i nomi id e buy ma ha perso i valori.

    Secondo me questo succede nelle righe dalla 6 alla 12, e cioè:
    Codice PHP:
    if (isset($_GET['buy'])) {
      
    // Add item to the end of the $_SESSION['cart'] array
      
    $IDaggiungi $_GET['buy'];
      
    $_SESSION['cart'][$IDaggiungi]++;
      
    header('location: ' $_SERVER['PHP_SELF'] . '?' SID);
      exit();

    Però non so come ovviare a questo. La costante SID è inserita (come indicato nel volume di Yank) per conservare l'ID di sessione anche quando il browser ha i cookies disabilitati.
    Come faccio a risolvere il problema senza compromettere questa importante funzionalità?
    Come faccio ritornare i valori che spariscono dall'URL?

    Grazie... spero che qulcuno mi aiuti anche se il messaggio è un po' lungo

  2. #2
    prova a stampare l'array $_SESSION.....

    Codice PHP:
    if (isset($_GET['buy'])) {
      
    // Add item to the end of the $_SESSION['cart'] array
      
    $IDaggiungi $_GET['buy'];
      
    $_SESSION['cart'][$IDaggiungi]++;
      echo 
    "<pre>";
      
    print_r($_SESSION);

      
    // header('location: ' . $_SERVER['PHP_SELF'] . '?' . SID);
      
    exit();

    vedi un po' cosa valorizzi nel $_SESSION

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Ho provato. La pgina che mi visualizza è questa:

    codice:
    Array
    (
        [cart] => Array
            (
                [1] => 1
            )
    )
    Poi questa:

    codice:
    Array
    (
        [cart] => Array
            (
                [1] => 2
            )
    )
    E via dicendo...

    La cosa importanete è che l'URL in questo caso conserva i valori!!

    Però questo conferma solo i miei sospetti. Ma come risolvo senza eliminare la costante SID che mi fa funzionare il carrello anche con cookies disabilitati?

  4. #4
    Originariamente inviato da fante1998

    La cosa importanete è che l'URL in questo caso conserva i valori!!

    Però questo conferma solo i miei sospetti. Ma come risolvo senza eliminare la costante SID che mi fa funzionare il carrello anche con cookies disabilitati?
    era quello che si voleva vedere con la stampa del $_SESSION.

    Sinceramente e personalmente me ne fotto se l'utente non abilita i cookies. vada pure a comprare altrove. Gli scrivi ben chiaro che da quel punto in poi i cookies devono essere abilitati "per la sua sicurezza dell'acquisto" e se non lo accetta significa che e' un perdiballe che fa solo casino.

    Vedi un po' se vuoi usare aree riservate se ne trovi uno, dico uno, che ti faccia entrare senza i cookie abilitati.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Originariamente inviato da piero.mac
    Vedi un po' se vuoi usare aree riservate se ne trovi uno, dico uno, che ti faccia entrare senza i cookie abilitati.
    Forse hai ragione... mi sto spaccando il cervello per niente!
    Farò abilitare questi dannati cookie!!

    Grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.