• User Newbie

    problema con sessioni

    ciao a tutti, sto facendo uno script php che mi permetta di avere un carrello attraverso cui selezionare gli articoli e fare un'offerta su uno o più di essi.
    Con il vecchio PHP usando *session_register *mi funzionava tutto bene, ora portandolo sulla versione 4.x di php se ritorno al carrello dell'html iniziale mi perdo i valori inseriti al primo passaggio.
    Mi spiego meglio:
    dal primo html offro 90,00 euro per articolo 1, accedo quindi alla seconda pagina che mi riposta correttamente i dati dell'articolo e il prezzo totale.
    A questo punto se torno alla pagina di scelta degli articoli, se inserisco ad esempio l'articolo 2 mi perdo l'ordine precedente, mentre prima mi aggiungeva nell'array il nuovo articolo...
    qualcuno mi aiuta e sa dirmi dove sbaglio?

    La prima parte è in html/javascript e mi permette di inserire una offerta per diversi articoli, questo è il codice:

    *<html>
    <head>
    <title>Lista</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    <body bgcolor="#ffffff" link="black" vlink="blue" alink="orange" leftmargin="0" topmargin="10" marginwidth="0" marginheight="0">
    <center>
    <h2><br>
    articoli in asta </h2>
    <p> </p>
    </center>

    <table width="700" border="0" align="center" cellpadding="5">

    <form action="carrello.php" method="post" name="basket" id="basket">
    <tr valign="middle" bgcolor="#CCCCCC">
    <td valign="top"><strong>ARTICOLO</strong></td>
    <td align="center" valign="top"><strong>offerta<br>
    <span class="Stile2">(specificare importo)</span></strong></td>
    <td valign="top"> </td>
    </tr>
    <tr valign="middle" bgcolor="#CCCCCC">
    <td width="514"> <input name="add" type="hidden" value="1"> <input name="nome" type="hidden" value="articolo 1">
    <input name="caratt" type="hidden" value="descrizione articolo 1">
    articolo 1 <font size="-1"> <em> base asta Euro 98,00<br>
    </em></font></td>
    <td align="center"><input name="prezzo" type="text" id="prezzo" size="6">
    <input type="HIDDEN" name="qta" size="2" maxlength="2" value="1"></td>
    <td><div align="center"><a href="#" onClick="basket.submit();" >offri</a></div></td>
    </tr>
    </form>
    <form name="basket1" method="post" action="carrello.php">
    <tr valign="middle" bgcolor="#CCCCCC">
    <td><p>
    <input name="add" type="hidden" value="1">
    <input name="nome" type="hidden" value="articolo 2">
    <input name="caratt" type="hidden" value="descrizione articolo 2">
    <font size="-1">articolo 2 base asta <em>Euro 80,00</em></font></p> </td>
    <td align="center" valign="top"><input name="prezzo" type="text" id="prezzo" size="6">
    <input type="HIDDEN" name="qta" size="2" maxlength="2" value="1"></td>
    <td valign="top"><div align="center"><a href="#" onClick="basket1.submit();" >offri</a></div></td>
    </tr>
    </form>
    <form action="carrello.php" method="post" name="basket2" id="basket2">
    <tr valign="middle" bgcolor="#CCCCCC">
    <td> <p>
    <input name="add" type="hidden" value="1">
    <input name="nome" type="hidden" value="articolo 3">
    <input name="caratt" type="hidden" value="descrizione articolo 3">
    <font size="-1">articolo 3 <em>base asta Euro 270,00</em></font></p> </td>
    <td align="center" valign="top"><input name="prezzo" type="text" id="prezzo" size="6">
    <input type="HIDDEN" name="qta" size="2" maxlength="2" value="1"></td>
    <td valign="top"><div align="center"><a href="#" onClick="basket2.submit();" >offri</a></div></td>
    </tr>
    </form>

    </table>

    </body>
    </html>
    *
    Lo script richiamato ha questo codice:

    *<? session_start();
    error_reporting(E_ALL);
    ?>
    <html>
    <head>
    <title>Carrello</title>

    <meta http-equiv="Content-Type" content="text/html;">

    <body bgcolor="#ffffff" link="black" vlink="blue" alink="orange" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
    <? include( "bas_add.php" ) ?>

    </body>
    </html>

    Il php incluso è il seguente:

    <?

    if( isset( $_POST[add] ) ) {

    $prods[] = $_POST[nome];
    $qtas[] = $_POST[qta];
    $prezzos[] = $_POST[prezzo];
    $caratts[] = $_POST[caratt];
    $nprods++;
    

    }

    if( isset( $_POST[update] ) ) {

    unset( $toDel );
    
    for( $n=0; $n<count($prods); $n++ ) {
        if( $qtasx[ $n ] == 0 ) {
            echo "Eliminax" . $n;
            $toDel[] = $n;
        } else
            $qtas = $qtasx;
            
    
    }    
    
    
    for( $n=0; $n<count( $toDel ); $n++ ) {
        echo "<br>eliminiamo " . count( $toDel ) . " - " . $n;
        array_splice( $prods, $n, 1 );
        array_splice( $qtas, $n, 1 );
        array_splice( $prezzos, $n, 1 );
        array_splice( $caratts, $n, 1 );
        $nprods--;
    }
    

    }

    if( !strstr(  $_SERVER["HTTP_REFERER"] ,  $_SERVER["REQUEST_URI"]   ) ) {
        echo "<font color=black>OK <br /></font>";
        $urlBack =  $_SERVER["HTTP_REFERER"] ;
        $_SESSION['urlBack'] = $urlBack;
        
    } else
        echo "<font color=black>NO<br /></font>";
    

    ?>

    <table border="1" cellpadding="1" cellspacing="0" align="center" width=700>
    <tr>
    <td align="left"><font face="Arial, Helvetica, sans-serif" size="1">Prodotto</font></td>
    <td align="left">
    <font face="Arial, Helvetica, sans-serif" size="1">Descrizione</font></td>
    <td align="right">
    <font face="Arial, Helvetica, sans-serif" size="1">Quant.</font>
    </td>
    <td align="right">
    <font face="Arial, Helvetica, sans-serif" size="1">Prezzo</font> </td>
    <td align="right">
    <font face="Arial, Helvetica, sans-serif" size="1">Prezzo quant.</font> </td>
    <td> </td>
    </tr>
    <form name="basket" method="POST" action="<?= $_SERVER["PHP_SELF"] ?>">
    <input type="hidden" name="update" value="1">
    <? $dTotale = 0;
    for( $n=0; $n<count( $prods ); $n++ ) { ?>
    <tr>
    <td>
    <?= $prods ?>
    </td>
    <td>
    <?= $caratts ?>
    </td>
    <td align="right">
    <input type="text" size="2" name="qtasx[<?= $n ?>]" value="<?= $qtas ?>">
    </td>
    <td align="right">
    <?= sprintf( "%.2f", $prezzos ) ?>
    </td>
    <td align="right">
    <?= sprintf( "%.2f", $prezzos * $qtas ) ?>
    </td>
    <td> <? echo $n; ?>   <a href="bas_del.php?return=carrello.php&id=<?= $n ?>"><font size=1">elimina</font></a></td>
    </tr>
    <? $dTotale += $prezzos * $qtas;
    } ?>
    </form>
    <tr>
    <td>TOTALE</td>
    <td> </td>
    <td> </td>
    <td> </td>
    <td align="right">
    <?= sprintf( "%.2f", $dTotale ) ?>
    </td>
    <td></td>
    </tr>
    </table>
    <p><br>

    <p> </p>
    <table width="500" height="40" border="1" align="center" cellpadding="0" cellspacing="0">
    <tr>
    <td align="center"><a href="#" onClick="javascript:basket.submit();">modifica quantità</a><br>
    <font face="Arial, Helvetica, sans-serif" size="2" color="red"><strong>(Prima di cliccare modificare la quantità nela casella del prodotto!)</strong></font></td>
    </tr>
    </table>
    <br>
    <table width="500" height="40" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>
    <td align="center"><a href="<?= $_SESSION['urlBack'] ?>">Torna
    all'asta</a></td>
    </tr>
    </table>
    <br>
    <table width="500" height="40" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>
    <td align="center"><a href="#"><b><font size=+1>Concludi offerta </font></b></a></td>
    </tr>
    </table>
    <p align="center"> </p>
    <p align="center"> </p>
    <p align="center"> </p>
    <p align="center"> </p>
    <p align="center"> </p>
    <p align="center"> </p>
    <?
    //session_register( "nprods" );
    //session_register( "prods" );
    //session_register( "qtas" );
    //session_register( "prezzos" );
    //session_register( "caratts" );

    $_SESSION['nprods'] = $nprods;
    $_SESSION['prods'] = $prods;
    $_SESSION['qtas'] = $qtas;
    $_SESSION['prezzos'] = $prezzos;
    $_SESSION['caratts'] = $caratts;

    echo "dollaro prods = " . $prods[0] . "<br />";
    echo "session nprods = " . $_SESSION['nprods'] . " <br />";
    echo "enne = " . $n . " <br />";
    echo "add = " . $_POST[add]. " <br />";
    echo "update = " . $_POST[update]. " <br />";
    echo "qtas = " . $qtas. " <br />";
    echo "qtasx = " . $qtasx. " <br />";
    echo "urlback in session equivale a : " . $_SESSION['urlBack'] . "<br />";
    echo "referer : " .$_SERVER["HTTP_REFERER"] ."<br />" . " uri : " . $_SERVER["REQUEST_URI"] ."<br />" . "urlback equivale a : " . $_SESSION['urlBack'] . "<br />";
    ?>*

    Al termine dello script oltre al vecchio session_register ora commentato ho provato degli echo per visulizzare i diversi valori...