Problema con i cookies

ppigna

Utente Attivo
23 Dic 2013
63
0
0
Buongiorno a tutti :)
Nel mio sito ho bisogno che un variabile numerica acquisita dall'invio di tre form, rimanga anche dopo il refresh della pagina. Così ho deciso di usare i cokkies, ma per qualche oscuro motivo non funzionano: quando si refresha la pagina la variante $totale si standardizza su 1 invece che sul numero ottenuto dai form. Vedete qualche mio errore? Codice del form:
HTML:
<div id="ac_content" class="ac_content">
			<h1>Oracolo del Web<span><br />Completa i campi e poi premi invio</span></h1>
			<form name="campo" action="frase2.php" method="post">
			<div class="ac_menu"> 
				<ul>
					<li>
						<a href="images/galassia2.jpg">Giorno</a>
						<div class="ac_subitem">
							<span class="ac_close"></span>
							<h2>Giorno</h2>
							<ul>
								<li>Che giorno è oggi? Inserisci il numero qui sotto e premi invio sulla tastiera.</li>
								<li><br /></li>
							</ul>
							<input type="text" name="giorno" size="15" maxlength="4" onkeyup="char_consentiti(this)">
						</div>
					</li>
					<li>
						<a href="images/galassia3.jpg">Mese</a>
						<div class="ac_subitem">
							<span class="ac_close"></span>
							<h2>Mese</h2>
							<ul>
								<li>In che mese siamo oggi? Inserisci il numero qui sotto e premi invio sulla tastiera.</li>
								<li><br /></li>
							</ul>
							<input type="text" name="mese" size="15" maxlength="4" onkeyup="char_consentiti(this)">
						</div>
					</li>
					<li>
						<a href="images/galassia4.jpg">Nome</a>
						<div class="ac_subitem">
							<span class="ac_close"></span>
							<h2>Nome</h2>
							<ul>
								<li>Come ti chiami? Inserisci il tuo nome qui sotto e premi invio sulla tastiera.</li>
								<li><br /></li>
							</ul>
							<input type="text" name="nome" size="15" maxlength="15">
						</div>
					</li>
					<li>
						<a href="images/galassia5.jpg">Invio</a>
						<div class="ac_subitem">
							<span class="ac_close"></span>
							<h2>Invio</h2>
							<ul>
								<li><p>Premi Invia per visualizzare il responso dell'oracolo.</p></li>
								<li><br /></li>
							</ul>
							<input type="submit" name="Invia"  value="  Invia  " onclick="location.href='frase2.php'">
						</div>
					</li>
				</ul>
			</div>
			</form>
		</div>

Cookies e codice PHP:
PHP:
<?php
	if (isset($_POST['giorno']))
	{
		$giorno = htmlspecialchars($_POST['giorno']);
	}
	
	if (isset($_POST['mese']))
	{
		$mese = htmlspecialchars($_POST['mese']);
	}
	
	if (isset($_POST['nome']))
	{
		$nome = htmlspecialchars($_POST['nome']);
	}
	
	$lunghezzanome = strlen($nome);
	$numero = $giorno + $mese + $lunghezzanome;
	
	setcookie("cookie", $numero);
?>
<?php
	if(isset($_COOKIE["cookie"]))
	{
		$totalee = $_COOKIE["cookie"];
	}
	
	$totale = $totalee;
	
	if(!$_GET)
	{
		switch($totale)
		{
			case $totale == 0 || $totale ==  10 || $totale ==  20 || $totale ==  30 || $totale ==  40 || $totale ==  50 ||  $totale ==  60 || $totale ==  70 || $totale ==  80 || $totale ==  90 || $totale ==  100;
				$frasi = file('txt/frasi0.txt', FILE_IGNORE_NEW_LINES);  
				$indice_random = array_rand($frasi);  
				echo '<a href="condividi.php?id_frase='.$indice_random.'">' . $frasi[$indice_random] . '</a>';
			break;
			
			case $totale == 1 || $totale ==  11 || $totale ==  21 || $totale ==  31 || $totale ==  41 || $totale ==  51 || $totale ==  61 || $totale ==  71 || $totale ==  81 || $totale ==  91 || $totale ==  101;
				$frasi = file('txt/frasi1.txt', FILE_IGNORE_NEW_LINES);  
				$indice_random = array_rand($frasi);  
				echo '<a href="condividi.php?id_frase='.$indice_random.'">' . $frasi[$indice_random] . '</a>';
			break;
			
			case $totale == 2 || $totale ==  12 || $totale ==  22 || $totale ==  32 || $totale ==  42 || $totale ==  52 || $totale ==  62 || $totale ==  72 || $totale ==  82 || $totale ==  92 || $totale ==  102;
				$frasi = file('txt/frasi2.txt', FILE_IGNORE_NEW_LINES);  
				$indice_random = array_rand($frasi);  
				echo '<a href="condividi.php?id_frase='.$indice_random.'">' . $frasi[$indice_random] . '</a>'; 
			break;
			
			case $totale == 3 || $totale ==  13 || $totale ==  23 || $totale ==  33 || $totale ==  43 || $totale ==  53 || $totale ==  63 || $totale ==  73 || $totale ==  83 || $totale ==  93 || $totale ==  103;
				$frasi = file('txt/frasi3.txt', FILE_IGNORE_NEW_LINES);  
				$indice_random = array_rand($frasi);  
				echo '<a href="condividi.php?id_frase='.$indice_random.'">' . $frasi[$indice_random] . '</a>';
			break;
			
			case $totale == 4 || $totale ==  14 || $totale ==  24 || $totale ==  34 || $totale ==  44 || $totale ==  54 || $totale ==  64 || $totale ==  74 || $totale ==  84 || $totale ==  94 || $totale ==  104;
				$frasi = file('frasi4.txt', FILE_IGNORE_NEW_LINES);  
				$indice_random = array_rand($frasi);  
				echo '<a href="condividi.php?id_frase='.$indice_random.'">' . $frasi[$indice_random] . '</a>';  
			break;
			
			case $totale == 5 || $totale ==  15 || $totale ==  25 || $totale ==  35 || $totale ==  45 || $totale ==  55 || $totale ==  65 || $totale ==  75 || $totale ==  85 || $totale ==  95 || $totale ==  105;
				$frasi = file('txt/frasi5.txt', FILE_IGNORE_NEW_LINES);  
				$indice_random = array_rand($frasi);  
				echo '<a href="condividi.php?id_frase='.$indice_random.'">' . $frasi[$indice_random] . '</a>';
			break;
			
			case $totale == 6 || $totale ==  16 || $totale ==  26 || $totale ==  36 || $totale ==  46 || $totale ==  56 || $totale ==  66 || $totale ==  76 || $totale ==  86 || $totale ==  96 || $totale ==  106;
				$frasi = file('txt/frasi6.txt', FILE_IGNORE_NEW_LINES);  
				$indice_random = array_rand($frasi);  
				echo '<a href="condividi.php?id_frase='.$indice_random.'">' . $frasi[$indice_random] . '</a>'; 
			break;
			
			case $totale == 7 || $totale ==  17 || $totale ==  27 || $totale ==  37 || $totale ==  47 || $totale ==  57 || $totale ==  67 || $totale ==  77 || $totale ==  87 || $totale ==  97 || $totale ==  107;
				$frasi = file('txt/frasi7.txt', FILE_IGNORE_NEW_LINES);  
				$indice_random = array_rand($frasi);  
				echo '<a href="condividi.php?id_frase='.$indice_random.'">' . $frasi[$indice_random] . '</a>';  
			break;
			
			case $totale == 8 || $totale ==  18 || $totale ==  28 || $totale ==  38 || $totale ==  48 || $totale ==  58 || $totale ==  68 || $totale ==  78 || $totale ==  88 || $totale ==  98 || $totale ==  108;
				$frasi = file('txt/frasi8.txt', FILE_IGNORE_NEW_LINES);  
				$indice_random = array_rand($frasi);  
				echo '<a href="condividi.php?id_frase='.$indice_random.'">' . $frasi[$indice_random] . '</a>';  
			break;
			
			case $totale == 9 || $totale ==  19 || $totale ==  29 || $totale ==  39 || $totale ==  49 || $totale ==  59 || $totale ==  69 || $totale ==  79 || $totale ==  89 || $totale ==  99 || $totale ==  109 || $totale ==  $totale >= 110;
				$frasi = file('txt/frasi9.txt', FILE_IGNORE_NEW_LINES);  
				$indice_random = array_rand($frasi);  
				echo '<a href="condividi.php?id_frase='.$indice_random.'">' . $frasi[$indice_random] . '</a>'; 
			break; 
		}
	}
	else
	{
		$frasi = file('txt/frasi.txt', FILE_IGNORE_NEW_LINES);
		$indice_random = $_GET['id_frase'];
		echo $frasi[$indice_random];
	}
?>

Scusate l'immane lunghezza, spero che qualche buon anima si prenda la briga di legger tutto
Grazie mille e buona domenica :)
 

flameseeker

Utente Attivo
27 Nov 2013
699
0
0
Così, a naso senza essermi letto tutto ma soltanto l'istruzione setcookie, direi che il motivo è che non hai impostato un tempo di scadenza del cookie.

Visto che a te serve solo per mantenere il dato dopo l'invio del form, direi che ti basta una scadenza piccola, anche solo di 20 secondi e di conseguenza ti suggerisco di modificare così la tua istruzione:
PHP:
setcookie("cookie", $numero, time()+20);
 

ppigna

Utente Attivo
23 Dic 2013
63
0
0
Così, a naso senza essermi letto tutto ma soltanto l'istruzione setcookie, direi che il motivo è che non hai impostato un tempo di scadenza del cookie.

Visto che a te serve solo per mantenere il dato dopo l'invio del form, direi che ti basta una scadenza piccola, anche solo di 20 secondi e di conseguenza ti suggerisco di modificare così la tua istruzione:
PHP:
setcookie("cookie", $numero, time()+20);

Ok, ma non credo sia quello il problema. Mi pare di aver letto sul sito di PHP che se non metti time(), il valore svanisce solo a chiusura del browser. E poi mi pare che non funzioni lo stesso...
 
Discussioni simili
Autore Titolo Forum Risposte Data
S Problema con i cookies Javascript 3
M Problema con Try Catch PHP 0
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
T PROBLEMA CON SESSIONI PHP 3
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
M Problema con controllo form in real time jQuery 6
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
G Problema con Get page PHP 4
P Problema con require once PHP 6
P Problema con i package Java 1
A Problema login con Safari PHP 14
F INDESIGN: problema esportazione esecutivo per la stampa con foto B/N Webdesign e Grafica 1
S problema con css bootstrap3 HTML e CSS 4
M .load() problema con caricamenti dinamici di js Javascript 0
G Problema ------- con Query PHP 1
G Problema con Query PHP 1
T problema con select dinamica con jquery Javascript 0
S Problema con spazi bianchi HTML e CSS 5
A PROBLEMA: insert mysqli con dati Tagsinput Presentati al Forum 0
Tommy03 Problema con z-index HTML e CSS 3
M Problema inserimento parole con apostrofo nel db PHP 5
C Problema con dati meteo xml XML 1
S Problema con infrarossi videocamera IP Cam e Videosorveglianza 1
V Problema con librerie allegro5 c++ C/C++ 1
M Problema con php per calcolo costo percentuale PHP 7
S Problema con mysqli_num_rows PHP 18
grgfede Problema javascript con aruba Javascript 1
M Problema con visibility e radio button Javascript 2
Marti1! Problema con casella mail cancellata Posta Elettronica 3
L [PHP] Problema con Telegram PHP 1
tomorc [HTML] Problema con scroll bar (risolto) HTML e CSS 0
S Strano problema con i title su Google SEO e Posizionamento 3
P [ASP.Net] Problema ERR_INCOMPLETE_CHUNKED_ENCODING 206 (Partial Content) con Font ASP.NET 4
P [HTML] Problema ERR_INCOMPLETE_CHUNKED_ENCODING 206 (Partial Content) con Font HTML e CSS 1
N [Apache] problema con estensione php Apache 0
C [PHP] Problema con download file PHP 0
M [PHP] Problema con preg_match PHP 1
gandalf1959 [PHP] problema con l'utilizzo di Header PHP 3
M [PHP] Problema con query select PHP 2
S [Javascript] Problema con condizione "if" Javascript 2

Discussioni simili