visualizzare i dati salvati nei cookies

ciao a tutti,

premetto che non ho molta esperienza con i cookies.

Ho un file search.php che memorizza in un cookie i valori della ricerca effettuata.

$time = time(); 

if (isset($cookie_data)) { 

$cookie_info = explode("&", $cookie_data); 

$1_name = $cookie_info[0]; 

$2_name = $cookie_info[1]; 

$name = $cookie_info[2]; 

$visits = $cookie_info[3]; 

$visits ++; 

$cookie_string = $1_name.'&'.$2_name.'&'.$name.'&'.$visits; 

setcookie ("cookie_data",$cookie_string, $time+3600); 

echo "Questa è la visita numero: $visits"; 

} else { 

$1_name = $query1; 

$2_name = $query2; 

$name = $query; 

$visits = 1; 

$cookie_string = $1_name.'&'.$2_name.'&'.$name.'&'.$visits; 

setcookie ("cookie_data",$cookie_string, $time+3600); echo ""; 

}

Se faccio stampare a video tali valori dalla pagina search.php, riesco a vederli, ma se voglio visualizzarli in un'altra pagina RIS.php non visualizzo niente....

come devo fare per far visualizzare all'interno della pagina RIS i dati salvati nei cookies??

Ho tentato questa strada

echo $HTTP_COOKIE_VARS["test_cookie"]; 

if (isset($_COOKIE["test_cookie"])) 

  echo "Il cookie vale: " . $_COOKIE["test_cookie"] ; 

else 

  echo "Il cookie non è stato impostato";

mi compare sempre il messaggio "il cookies non è stato impostato".

Il mio obiettivo è quello di salvare in un'area, per ogni utente, le ricerche che ha effettuato utilizzando search.php e farle visualizzare in un'altra pagina RIS.php

 :(

inviato 9 anni fa
stellina
X 0 X

beh, innanzitutto mi sembra strano che non ti dia parsing error visto che normalmente non sono permessi i nomi di variabile che cominciano con un numero, ma poi...mi sembra logico che non ti trovi il cookie "test_cookie" se nella pagina precedente lo setti come "cookie_data"!

Ah, evita di usare la variabile $HTTP_COOKIE_VARS che è deprecata.

Altro suggerimento: invece di scrivere

$cookie_info = explode("&", $cookie_data); 
$name1 = $cookie_info[0]; 
$name2 = $cookie_info[1];
$name = $cookie_info[2]; 
$visits = $cookie_info[3];

secondo me è più comodo scrivere

list( $name1, $name2, $name, $visits ) = explode("&", $cookie_data);

il risultato è il medesimo

 :bye:

risposto 9 anni fa
Xscratch
X 0 X

ho modificato un pò lo script,

ma ogni volta che lancio la ricerca tramite search.php i dati all'interno del cookies vengono cancellati e riscritti (il numero delle visite è sempre a uno... e la query di ricerca è sempre impostata sull'ultima ricerca eseguita.)

cosa devo fare per mostrare le ricerche effettuate con la data e l'ora e il numero di visite fatte?

$time = time(); 

if (!isset($cookie_data)) { 

   $f_name = $_GET['query1']; 

   $l_name = $_GET['query2']; 

   $dominio_cookie = "miosito.it";

   $visits = 1; 

   $cookie_string = $f_name.'&'.$l_name.'&'.$visits; 

   setcookie ("cookie_data",$cookie_string, $time+3600); 

   echo "ok.ok"; 

} 

else {

   list( $f_name, $l_name, $visits ) = explode("&", $cookie_data);

   $visits ++; 

   $cookie_string = $f_name.'&'.$l_name.'&'.$visits; 

   $dominio_cookie = "miosito.it";

   setcookie ("cookie_data",$cookie_string, $time+3600); 

   echo "Questa è la visita numero: $visits"; 

}

perchè se scrivo : setcookie ("cookie_data",$cookie_string, $time+3600,"/",$dominio_cookie);

il cookies non viene impostato?

grazie !!

 :bye:

risposto 9 anni fa
stellina
X 0 X

è importantissimo che non ci sia nessun output prima di lanciare il setcookie(), hai fatto così?

ah, ora che guardo meglio....ma dove valorizzi la variabile $cookie_data ?

prova piuttosto a cercare $_COOKIE['cookie_data'];

risposto 9 anni fa
Xscratch
modificato 9 anni fa
X 0 X
è importantissimo che non ci sia nessun output prima di lanciare il setcookie(), hai fatto così?

ho un file index.php che richiama il file form_search.html che al suo interno ha il form di ricerca

<form action="search.php" method="get">

all'interno del file search.php ho inserito il codice che ho postato prima

mentre nel file RIS.php visualizzo i dati salvati nel cookies tramite questo script

if (isset($_COOKIE["cookie_data"]))

{  

  list( $f_name, $l_name, $visits ) = explode("&", $_COOKIE["cookie_data"]);

  echo "Il cookie vale: $f_name, $l_name, $visits";

}

else

  echo "Il cookie non è stato impostato";

il problema è questo, nel cookies vengono ogni volta SOVRASCRITTI i dati.

Quindi il numero delle visite rimane sempre a 1 e i valori usati per la riceca sono sempre gli ultimi.

perchè????

 :bye:

risposto 9 anni fa
stellina
modificato 9 anni fa
X 0 X

Ferma, ferma! ...probabilmente non hai capito bene come gestirli...

prova così:

<?php
if ( !isset( $_COOKIE['mioCookie'] ) )
{ 
    setcookie ("mioCookie", "prova del cookie");
    echo "il cookie è stato creato";
}
else
{
    echo "Cookie trovato, questo è il suo valore: ";
    echo $_COOKIE['mioCookie'];
}
?>
risposto 9 anni fa
Xscratch
X 0 X

ma io ho bisogno di visualizzare il contenuto del cookie nel file RIS.php e non all'interno di search.php dove vado a crearlo  :(

risposto 9 anni fa
stellina
X 0 X

non è un problema, dividi lo script:

search.php

<?php
if ( !isset( $_COOKIE['mioCookie'] ) )
{ 
    setcookie ("mioCookie", "prova del cookie");
    echo "il cookie è stato creato";
}
?>

RIS.php

<?php
if ( isset( $_COOKIE['mioCookie'] ) )
{
    echo "Cookie trovato, questo è il suo valore: ";
    echo $_COOKIE['mioCookie'];
}
else
{
    echo "Cookie NON trovato";
}
?>
risposto 9 anni fa
Xscratch
X 0 X

sono riuscita ad ottenere l'incremento delle visite ma non iresco ad inserire man mano (una di seguito all'altra o simile) tutti le ricerche effettute trmite search.php.... mi salva sempre l'ultima....  >:(

risposto 9 anni fa
stellina
X 0 X

uhm...posta il codice

risposto 9 anni fa
Xscratch
X 0 X
$time = time(); 

if (!isset($_COOKIE['cookie_data'])) { 

   $f_name = $_GET['query1']; 

   $l_name = $_GET['query2']; 

   $dominio_cookie = "miosito.it";

   $visits = 1; 

   $cookie_string = $f_name.'&'.$l_name.'&'.$visits; 

   // (7 * 86400) equilvale ad una settimana

   setcookie ("cookie_data",$cookie_string, $time + (7 * 86400)); 

   $inTwoMonths = 60 * 60 * 24 * 60 + time(); 

   setcookie('lastVisit', date("G:i - m/d/y"), $inTwoMonths); 

   echo "ok.ok"; 

} 

else {

   list( $f_name, $l_name, $visits ) = explode("&", $_COOKIE['cookie_data']);

   $f_name = $_GET['query1']; 

   $l_name = $_GET['query2']; 

   $visits ++; 

   $cookie_string = $f_name.'&'.$l_name.'&'.$visits; 

   $dominio_cookie = "miosito.it";

   // (7 * 86400) equilvale ad una settimana

   setcookie ("cookie_data",$cookie_string, $time + (7 * 86400)); 

   $inTwoMonths = 60 * 60 * 24 * 60 + time(); 

   setcookie('lastVisit', date("G:i - m/d/y"), $inTwoMonths); 

   echo "Questa è la visita numero: $visits"; 

}
risposto 9 anni fa
stellina
X 0 X

con il codice che ho postato sono riuscita ad ottenere l'incremento delle visite, il giorno dell'ultima visita, 

e l'ultima ricerca.

In verità vorrei ottenere lo storico delle ricerche (quelle di tutta la settimana visto che poi il cookie muore...)

come posso ottenerlo???

risposto 9 anni fa
stellina
X 0 X

prova a mettere

   
setcookie ("cookie_data[]",$cookie_string, $time + (7 * 86400));
risposto 9 anni fa
Xscratch
X 0 X

funziona!!

adesso salva più ricerca nel file

MA non riesco a leggere i dati contenuti nel cookie...

risposto 9 anni fa
stellina
X 0 X

allora, mettendo le parentesi quadre in setcookie() viene creato un array quindi i dati del cookie li trovi tutti in $_COOKIE['nomecookie']

prova a scrivere print_r($_COOKIE) vedrai che ci sono tutti i dati che cerchi

 :bye:

ah, se volessi fare le cose per bene sarebbe meglio creare un solo cookie per il tuo sito, invece di averne uno per le visite e uno per le ricerche

risposto 9 anni fa
Xscratch
X 0 X

mi sono accorta che nello script questo riga

   list( $f_name, $l_name, $visits ) = explode("&", $_COOKIE['cookie_data']);

mi crea una serie di errori

Array to string conversion in ....

e Undefined offset: 2 ......

sicuramente dipende dal fatto che ora cookie_data è un array

quindi nel file ho un array di cookies e per ogni cookie ho un array di dati??

risposto 9 anni fa
stellina
X 0 X

guarda, io a questo punto farei così:

$visits = 1;
$inTwoWeeks = $time + (7 * 86400);
$inTwoMonths = 60 * 60 * 24 * 60 + time();
$f_name = $_GET['query1']; 
$l_name = $_GET['query2'];
if (isset($_COOKIE['miositoCookie'])) {
   echo "<br>Questa è la tua visita numero: " .
   $visits = $_COOKIE['miositoCookie']['visitsCount'] + 1;

   echo "<br>La tua ultima visita risale al: " .
   $visits = $_COOKIE['miositoCookie']['lastVisit'];

   echo "Questi sono i termini che hai ricercato finora: <pre>";
   print_r($_COOKIE['miositoCookie']['searches']);
   echo "</pre>";
} else {
   echo "e' la prima volta che vieni su questa pagina! Benvenuto";
}
$search = $f_name . '&' . $l_name;

setcookie ("miositoCookie[searches][]", $search, $inTwoWeeks );
setcookie ("miositoCookie[visitsCount]", $visits, $inTwoWeeks );
setcookie ("miositoCookie[lastVisit]", date("G:i - m/d/y"), $inTwoMonths );
echo "Cookie creati/aggiornati";

 :bye:

risposto 9 anni fa
Xscratch
X 0 X

riepilogando questo è il codice per la creazione del cookie

$time=time();

$visits = 1;

$inTwoWeeks = $time + (7 * 86400);

$inTwoMonths = 60 * 60 * 24 * 60 + time();

$f_name = $_GET['query1']; 

$l_name = $_GET['query2'];

if (isset($_COOKIE['miositoCookie'])) {

   $visits = $_COOKIE['miositoCookie']['visitsCount'] + 1;

   $last_visit = $_COOKIE['miositoCookie']['lastVisit'];

  } else {

}

$search = $f_name . '&' . $l_name;

setcookie ("miositoCookie[searches][]", $search, $inTwoWeeks );

setcookie ("miositoCookie[visitsCount]", $visits, $inTwoWeeks );

setcookie ("miositoCookie[lastVisit]", date("G:i - m/d/y"), $inTwoMonths );

echo "Cookie creati/aggiornati";

mentre con questo codice visualizzo i dati salvati:

if (isset($_COOKIE['miositoCookie'])) {

   echo "Questa è la tua visita numero: ";

   print_r($_COOKIE['miositoCookie']['visitsCount']);

   echo "<br><br>";

   echo "La tua ultima visita risale al: ";

   print_r($_COOKIE['miositoCookie']['lastVisit']);

    echo "<br><br>";

   echo "Questi sono i termini che hai ricercato finora: <pre>";

   print_r($_COOKIE['miositoCookie']['searches']);

   echo "</pre><br><br>";

} else {

   echo "e' la prima volta che vieni su questa pagina! Benvenuto";

}

il problema permane

non riesco a salvare tutte le ricerche eseguite, solo l'ultima viene salvata.  :-\  :-\  :-\

Il contatore delle visite viene incrementato.

La data dell'ultima visita è esatta.

risposto 9 anni fa
stellina
X 0 X

non  so più cosa fare....  :'(

risposto 9 anni fa
stellina
X 0 X

scusami, ho fatto un po di casino...il fatto è che prima il codice lo scrivevo direttamente quì senza provarlo...

ora invece mi sono preso il tempo di testarlo:

search.php

<?php
$time=time();
$visits = 1;
$inTwoWeeks = $time + (7 * 86400);
$inTwoMonths = 60 * 60 * 24 * 60 + time();
$f_name = $_GET['query1']; 
$l_name = $_GET['query2'];
$s = $f_name . '&' . $l_name;
$searches = array();
if (isset($_COOKIE['miositoCookie'])) {
   $visits = $_COOKIE['miositoCookie']['visitsCount'] + 1;
   $searches = $_COOKIE['miositoCookie']['searches'];
}
$searches[] = $s;
foreach ( $searches as $key => $search ) {
   setcookie ("miositoCookie[searches][".$key."]", $search, $inTwoWeeks );
}

setcookie ("miositoCookie[visitsCount]", $visits, $inTwoWeeks );
setcookie ("miositoCookie[lastVisit]", date("G:i - m/d/y"), $inTwoMonths );
echo "Cookie creati/aggiornati";

?>

RIS.php

<?php
if (isset($_COOKIE['miositoCookie'])) {
   echo "Questa è la tua visita numero: ";
   print_r($_COOKIE['miositoCookie']['visitsCount']);
   echo "<br><br>";
   echo "La tua ultima visita risale al: ";
   print_r($_COOKIE['miositoCookie']['lastVisit']);
    echo "<br><br>";
   echo "Questi sono i termini che hai ricercato finora: <pre>";
   print_r($_COOKIE['miositoCookie']['searches']);
   echo "</pre><br><br>";
} else {
   echo "e' la prima volta che vieni su questa pagina! Benvenuto";
}
?>
risposto 9 anni fa
Xscratch
X 0 X

fantastico!!!!!!!!!!!!!  :D

ora devo solo fomrattare i risultati !!

grazie  :-*

risposto 9 anni fa
stellina
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda