E' possibile salvare array tramite sessione o cookie?

  • Creatore Discussione Creatore Discussione c02y
  • Data di inizio Data di inizio

c02y

Utente Attivo
30 Nov 2012
30
0
0
Buona sera.

Devo salvare un array tramite sessione o cookie, in modo tale che ogni volta vado ad aggiungere un valore all'array.

Ho provato con la variabile globale $_SESSION ma l'array non me l'ha salvato.

Per farla breve: Tramite una select(in una form) seleziono un colore (rosso=1 blue=2) a seconda del colore selezionato vado ad aggiungere un elemento al corrispettivo array.

In seguito, quando selezionerò di nuovo lo stesso colore, l'array si dovrà incrementare di un'unità.

Nel caso siete curiosi, e vi stiate domandando "Perché tutto questo?", la risposta è semplice.

Sto cercando di fare questo esercizio: http://www.dia.unisa.it/professori/parente/TSW/include/esercizi/esPhpCss1.pdf

Tramite il numero di elementi presenti nell'array, ho pensato che sarei in grado di contare il numero di volte che ho aggiunto un determinato colore.


Ora vi posto il codice:

PHP:
$color=$_POST["select_color"];
					
					if ($color==1)
					{
						$array_red[]=$color;
						session_start();
						$_SESSION["array_red"]=$array_red;
					}
					
					else
					{
						if ($color==2)
						{
						$array_blue[]=$color;
						session_start();
						$_SESSION["array_blue"]=$array_blue;
						}
						
						
					}
 
Ultima modifica:
ciao
dovresti usare
PHP:
$_SESSIONE['pinco']=serialize($array);
per metterela nella sessione o nel cookie, poi per leggerla
PHP:
$array=unserialize($_SESSIONE['pinco']);


p.s.
non usare quote per il codice, guarda le successive tre iconcine
 
serializze() e unserializze() servono solo, nel caso tu voglia salvare i dati il un archivio esterno o database, visto che non vengono supportati gli oggetti ( in questo caso array ).

Se mai puoi utilizzarli per i cookie, visto che vengono salvati dal browser in dei file, ma per le sessioni ti basta semplicemente inizializzare la sessione in questo modo:

PHP:
$sessione = $_SESSION["nome_sessione"] = array("primo valore", "secondo_valore");

Per poi recuperare i dati in questo modo:

PHP:
echo $_SESSION["nome_sessione"][0]; // Stampa il il valore dell'indice 0 dell'array nella sessione
echo $_SESSION["nome_sessione"][1]; // Stampa il valore dell'indice 1 dell'array nella sessione

Anche io per il mio sistema di login alcune volte utilizzo questo metodo, e mi sono trovato sempre bene, in oltre, ho risposto a questa discussione visto che ci tenevo a dirti, consigliarti più che altro, di utilizzare le funzione dette qui sopra solamente per i cookie, visto che il browser li salva in dei file, mentre per le sessioni ti consiglio il metodo da me usato qui sopra.
 
Ultima modifica:
ciao
prova questi due script
PHP:
<?php
$pinco=array('a','b',3,5,'d');
setcookie("pinco", $pinco, time()+3600);
var_dump($_COOKIE['pinco']);
/*output
Warning: setcookie() expects parameter 2 to be string, array given in C:\AppServ\www\cartella\000001.php on line 3
NULL 
*/
?>
PHP:
<?php
$pinco=serialize(array('a','b',3,5,'d'));
setcookie("pinco", $pinco, time()+3600);
var_dump($_COOKIE['pinco']);
/*output
string(64) "a:5:{i:0;s:1:\"a\";i:1;s:1:\"b\";i:2;i:3;i:3;i:5;i:4;s:1:\"d\";}" 
*/
?>
 
Grazie per le risposte ragà!

Alla fine ho risolto in parte.

Sono riuscito a salvare un array tramite sessione. Il problema ora è che, visto che devo lavorare su un'unica pagina, non riesco a capire come creare una sessione solo la prima volta, così che la seconda volta vada a leggere e aggiornare i valori della sessione precedente.

Vi posto il codice così vedete anche come ho risolto.

PHP:
$color=$_POST["select_color"];
					
															if ($color==1) // Se il colore selezionato è il ROSSO
																{
																	$array_red[]=$color;
																	session_start();
																	$_SESSION["array_red"]=$array_red;
																}
					
															else
																{
																		if ($color==2) // Se il colore selezionato è il BLU
																			{
																				$array_blue[]=$color;
																				session_start();
																				$_SESSION["array_blue"]=$array_blue;
																			}
						
						
																}



Come vedete, quando invio i dati li recupero tramite la variabile globale $_POST. Il problema è come riuscire ad implementare ciò che ho scritto sopra!

Questo è il codice che serve a leggere un array tramite sessione e successivamente ad aggiornarlo.


PHP:
session_start(); //riprendo la sessione
        $array1=$_SESSION['array_blue'];

Se sono stato poco chiaro, vi prego di farmelo notare;)
 
Rendilo più dinamico il codice

PHP:
session_start();

switch($_POST['select_color']){
    case 1:
        $color = 'array_red';
        break;
    case 2:
        $color = 'array_blue';
        break;
   //qui puoi aggiungerne altri
    
    default:
        //qui fai stampare un errore o setti un controllo a piacere per non far settare la sessione
        die('Errore, colore invalido');
}
   
if(!isset($_SESSION[$color])) 
    $_SESSION[$color] = array($_POST['select_color']);
else
   array_push($_SESSION[$color],$_POST['select_color']);
 

Discussioni simili