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

    Sessioni e dimensione max array

    Classica situazione del negozio con carrello online, sessioni, ecc.
    In una certa pagina viene elaborato l'array con i prodotti, dove ciascun elemento dell'array è appunto un prodotto del carrello. E ok. Il risultato è un nuovo array, sempre con un elemento per ogni articolo del carrello, però diverso da quello di prima, a me interessa salvare quest'ultimo come variabile di sessione:

    Codice PHP:
    $_SESSION['newProductArray'] = $productArray
    Fino a quando $productArray ha 32 articoli o meno (quindi ci sono 32 o meno articoli nel carrello) è tutto ok, altrimenti... non me lo salva!
    Ovvero se dopo scrivo così

    Codice PHP:
    foreach ($_SESSION['newProductArray'] as $product
    mi dà:

    Warning: Invalid argument supplied for foreach() in ...
    Com'è possibile?
    E soprattutto come rimediare?

    È molto importante, grazie.

  2. #2
    Utente di HTML.it L'avatar di alpeweb
    Registrato dal
    Oct 2002
    Messaggi
    1,691
    ti consiglio di vedere cosa c'è dentro al 33esimo.
    Cmq prova con un for($i=0;$i<count($_SESSION['productArr']);$i++){}
    ...altri 5 anni di purga...

  3. #3
    Originariamente inviato da alpeweb
    ti consiglio di vedere cosa c'è dentro al 33esimo.
    Cmq prova con un for($i=0;$i<count($_SESSION['productArr']);$i++){}
    La copia dell'array nel nuovo array, cioè l'istruzione

    Codice PHP:
    $_SESSION['newProductArray'] = $productArray
    avviene correttamente, il 33simo è un normale articolo del carrello. Quindi se uso $_SESSION['newProductArray'] in quella stessa pagina, l'array è corretto, nessun problema.

    Quando però richiamo la variabile $_SESSION['newProductArray'] in un'altra pagina, se l'array aveva più di 32 elementi non me lo trova... cioè me lo segna proprio come lunghezza 0, come se non ci fosse più... quindi neanche con l'altro costrutto for che hai suggerito funziona...
    Non riesco a capire dove possa essere il limite che causa questa cosa (apparentemente senza senso), in ogni caso se c'è qualche trucco semplice per aggirare il problema (separare in 2 array?) meglio...

  4. #4
    Utente di HTML.it L'avatar di alpeweb
    Registrato dal
    Oct 2002
    Messaggi
    1,691
    lavori in locale?
    ...altri 5 anni di purga...

  5. #5
    Originariamente inviato da alpeweb
    lavori in locale?
    No è tutto online e operativo da un pezzo...
    Oggi è successa questa cosa visto che un cliente ha ordinato 34 articoli (il primo con un ordine così grande)...

  6. #6
    Utente di HTML.it L'avatar di alpeweb
    Registrato dal
    Oct 2002
    Messaggi
    1,691
    stranissimo...
    non è che hai qualche controllo sulla pagina successiva?

    Ma perdi solo i dati dell'array?
    ...altri 5 anni di purga...

  7. #7
    Originariamente inviato da alpeweb
    stranissimo...
    non è che hai qualche controllo sulla pagina successiva?
    No nessun controllo, l'array non viene toccato... lo uso solo col foreach...


    Originariamente inviato da alpeweb
    Ma perdi solo i dati dell'array?
    Sì, di quel specifico array (il carrelo in sè rimane e tutte le variabili di sessione)...


    Siccome in un certo senso sono abituato alle stranezze della programmazione che a volte accadono (cose apparentemente inspiegabili, o con una spiegazione talmente incasinata che è meglio semplicemente aggirare il problema in qualche altro modo) mi chiedo appunto se c'è un metodo veloce per aggirare il problema...

  8. #8
    Utente di HTML.it L'avatar di alpeweb
    Registrato dal
    Oct 2002
    Messaggi
    1,691
    La cosa più veloce e con l'impatto minore che mi viene in mente è il
    serialize() dell'array e poi sulla pagina seguente ti fai un unserialize().

    Ricordati l'addslashes e lo strip

    Anche se io cercherei di capire dove sta il problema.
    Quel 32 mi fa pensare che ci sia un limite da file di configurazione, ma putroppo
    non ne sono a conoscenza.
    ...altri 5 anni di purga...

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.