Visualizzazione dei risultati da 1 a 2 su 2

Discussione: sessioni e php.ini

  1. #1

    sessioni e php.ini

    Ho trovato uno script di un esempio di carrello
    catalogo.php
    e carrello.php
    ma non riesco a farlo funzionare
    con winxp/apache 1.3.33/php4.3.10
    ne con
    con slackware10/apache 1.3.33/php4.3.10
    mentre con uniserver3_2 per win (pacchetto con apache2.0.50/php5.0.0) funziona perfettamente!
    credo che dipenda da php.ini, ma non me ne intendo un gran che, cosi se qualcuno potesse aiutarmi,
    dicendomi quali direttive devo editare o che controlli eseguire.

    //////////////// catalogo.php ///////////////////////////
    <?php
    session_start();
    session_register("carrello");
    ?>
    <html>
    <body>

    <div align="center">
    <h2> I nostri prodotti</h2>
    <table border="1" cellspacing="0" cellpadding="5" align="center">
    <tr><th>Articolo</th><th>Prezzo</th><th>Quantita</th>
    Carrello</th></tr>

    <?php
    for ($k=1; $k<4; $k++)
    {
    ?>
    <tr>
    <form action="carrello.php" method="post">
    <td>Articolo<?=$k?></td><td>Euro<?=$k*1000?></td>
    <td><input type="text" size="4" name="quantita" value="0"></td>
    <td><input type="submit" name="aggiungi" value="aggiungi"></td>
    <input type="hidden" name="id" value="<?=$k?>">
    <input type="hidden" name="prezzo" value="<?=$k*1000?>">
    <input type="hidden" name="nome" value="<?=$k?>">
    </form>
    </tr>

    <?
    }
    ?>
    </table>


    ci sono <?=count($carrello)?> articolo nel carrello
    </div>
    </body>
    </html>
    /////////////eof//////////////////////

    ////////////////////////carrello.php/////////////////////////

    <?php
    session_start();
    session_register("carrello");
    ?>
    <html>
    <body>
    <?
    if($aggiungi && $quantita>0)
    {
    $carrello["$id"]=array("nome"=>"$nome", "prezzo"=>"$prezzo", "quantita"=>"$quantita");

    }
    if ($vuota)
    {
    unset($carrello);
    session_unregister("carrello");
    }
    if ($elimina)
    { unset($carrello["$id"]);}
    ?>
    <? if (count($carrello)>0) {?>
    <div align="center">
    <h2>Carrello</h2>
    <table border="1">
    <tr>
    <th>Articolo</th><th>Prezzo</th><th>Quantita</th>
    <th>svuota il carrello</th>
    </tr>
    <?
    $tot=0;
    while (list($id,$articolo)=each($carrello))
    {
    $tot+=$articolo["quantita"]*$articolo["prezzo"];
    ?>
    <tr>
    <form action="carrello.php" method="post">
    <td><?=$articolo["nome"]?></td>
    <td><?=$articolo["prezzo"]?></td>
    <td><?=$articolo["quantita"]?></td>
    <td><input type="submit" name="elimina" value="elimina"></td>

    <input type="hidden" name="id" value="<?=$id?>">

    </form>
    </tr>
    <?
    }
    ?>
    <tr><td colspan="4" align="right"> TOT <?=$tot?></td></tr>
    </table>


    ritorna al catalogo
    </div>
    <? } else { ?>
    <h2>Carrello vuoto</h2> <?} ?>
    </body>
    </html>
    /////////////eof/////////////

    il problema è che ottengo in catalogo.php

    Notice: Undefined variable: carrello in c:\programmi\apache group\apache\htdocs\carrello\catalogo.php on line 34
    0 articolo nel carrello

    mentre in carrello.php

    Notice: Undefined variable: aggiungi in c:\programmi\apache group\apache\htdocs\carrello\carrello.php on line 8

    Notice: Undefined variable: vuota in c:\programmi\apache group\apache\htdocs\carrello\carrello.php on line 13

    Notice: Undefined variable: elimina in c:\programmi\apache group\apache\htdocs\carrello\carrello.php on line 18

    Notice: Undefined variable: carrello in c:\programmi\apache group\apache\htdocs\carrello\carrello.php on line 21

    Ho controllato nella cartella sessiondata e la sessione viene aperta
    mentre con uniserv_3_2 funziona a meraviglia!
    Grazie Roberto

  2. #2
    questo script è stracolmo di cose che non andrebbero fatte, nonchè mi pare un po' attempato..

    - usa gli short open tags
    - usa le vecchie sessioni (senza superglobals)
    - non dichiara le variabili prima di usarle
    - lavora con register globals On

    i NOTICE li puoi far tacere o impostando error_reporting(E_ALL|~E_NOTICE) all'inizio dello script o, meglio, dichiarando prima le variabili segnalate.

    se hai probs colle sessioni, invece, questo potrebbe essere dovuto al fatto che non è buona norma usare le session_register() e simili con register_globals attivo in PHP "recenti" ... trovi molte info a proposito sul man alla sezione sessions
    <?php echo ' Emiliano Gabrielli (aka AlberT) ',"\n",
    ' socio fondatore e membro del direttivo del GrUSP ',"\n",
    ' AlberT_at_SuperAlberT_it - www.SuperAlberT.it ',"\n",
    ' IRC: #php,#AES azzurra.com ',"\n",'ICQ: 158591185'; ?>

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.