Mantenere valore di un form anche dopo refresh

  • Creatore Discussione Creatore Discussione ppigna
  • Data di inizio Data di inizio

ppigna

Utente Attivo
23 Dic 2013
63
0
0
Buongiorno a tutti :)
Ho un sito con un form e degli input. In base al numero che metti in questi input, i valori si sommano e danno una variabile numerica. In base a questa variabile numerica, il sito genera una frase a random da un gruppo di frasi. Se per esempio la variabile finisce per 1 (1, 11, 21, 31 ecc...), il sistema random pesca da un gruppo1.txt, se la variabile finisce per 5 (5, 15, 25 ec...) da un gruppo5.txt. Nel sito c'è anche la possibilità, grazie a un <a> di refresh, di vedere un'altra frase, presa sempre dallo stesso gruppo.txt. Invece, quando si refresha la pagina, la variabile ottenuta dal form scompare e mi viene assegnata come variabile di default 1 (quindi vengono sempre visualizzate frasi del gruppo1.txt). Come fare per mantenere il valore ottenuto dal form?
Se vi servono delucidazioni o parti di codici chiedete pure, grazie mille :)
 
Prova intanto a postare il codice che stai utlizzando..

Allora, questo è il form (index.php):
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="frase.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='frase.php'">
						</div>
					</li>
				</ul>
			</div>
			</form>
		</div>

Questo invece è il php che serve a visualizzare la frase (frase.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);
	$totale = $giorno + $mese + $lunghezzanome;
	
	
	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 $frasi[$indice_random];
		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 $frasi[$indice_random];  
		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 $frasi[$indice_random];  
		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 $frasi[$indice_random];  
		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 $frasi[$indice_random];  
		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 $frasi[$indice_random];  
		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 $frasi[$indice_random];  
		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 $frasi[$indice_random];  
		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 $frasi[$indice_random];  
		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 $frasi[$indice_random];  
		break;
	}
?>
 
potrsti gestire con le sessioni.
All' inzio della tua pagina index metti questo codice:
PHP:
<?php
session_start();
$giorno="";
$mese="";
if(isset($_SESSION['giorno']))
{
$giorno=$_SESSION['giorno'];
}
if(isset($_SESSION['mese']))
{
$mese=$_SESSION['mese'];
}

e passi il valore nel campo value corrispondente del campo input.

Imposti le sessioni una volta che hai inviato i dati alla pagina frase.php e una volta che hai effettuato il refresh ti prende il valore della sessione corrispondente.
 
potrsti gestire con le sessioni.
All' inzio della tua pagina index metti questo codice:
PHP:
<?php
session_start();
$giorno="";
$mese="";
if(isset($_SESSION['giorno']))
{
$giorno=$_SESSION['giorno'];
}
if(isset($_SESSION['mese']))
{
$mese=$_SESSION['mese'];
}

e passi il valore nel campo value corrispondente del campo input.

Imposti le sessioni una volta che hai inviato i dati alla pagina frase.php e una volta che hai effettuato il refresh ti prende il valore della sessione corrispondente.

Il problema è che sono un novellino su queste cose e non credo di essere abbastanza bravo da fare quello che dici tu (a meno che tu non sia disposto a guidarmi passo passo ahaha). Forse con il metodo GET è più facile?
 
Il problema è che sono un novellino su queste cose e non credo di essere abbastanza bravo da fare quello che dici tu

Non si deve eseere particolarmente bravi per far questo. Nell pagina frase.php crei la sessione in questo modo
PHP:
session_start();
if (isset($_POST['giorno']))
    {
 $_SESSION['giorno']=$_POST['giorno'];
        $giorno = htmlspecialchars($_POST['giorno']);
    }
    
    if (isset($_POST['mese']))
   {
 $_SESSION['mese']=$_POST['mese'];
        $mese = htmlspecialchars($_POST['mese']);
    }



http://www.edinweb.altervista.org
 
Non si deve eseere particolarmente bravi per far questo. Nell pagina frase.php crei la sessione in questo modo
PHP:
session_start();
if (isset($_POST['giorno']))
    {
 $_SESSION['giorno']=$_POST['giorno'];
        $giorno = htmlspecialchars($_POST['giorno']);
    }
    
    if (isset($_POST['mese']))
   {
 $_SESSION['mese']=$_POST['mese'];
        $mese = htmlspecialchars($_POST['mese']);
    }

Credo di avere già risolto usando i cookies. Credi sia una buona soluzione?
 

Discussioni simili