Newsgroup: it.comp.www.php
Titolo: Modificare una variabile passata

Salve a tutti, scrivo chiedendo lumi al NG visto che non sono riuscito a 
trovare soluzione dopo ricerche in google e in codesto gruppo.
Praticamente mi ritrovo un modulo composto da più pagine e attraverso il 
sistema delle sessioni mi passo le variabili da una pagina all'altra, il 
problema è che se torno indietro e modifico qualcosa la variabile di 
sessione non viene aggiornata e quindi mi ritrovo sempre con i valori 
vecchi. Come posso fare ad ovviare a questo inconveniente? Cosa mi sono 
dimenticato?
Grazie in anticipo a coloro mi aiuteranno. :-)
-- 
Effe8

 dimenticato?
Come fai le modifiche? 
Problemi salgono quando si usa session_register _E_ $_SESSION.

 Problemi salgono quando si usa session_register _E_ $_SESSION.
Mi spiego meglio, ho fatto un modulo con un campo "prova" , e poi registro 
la variabile $prova nella sessione, dopodichč passo ad un'altra pagina e 
inserisco altri dati nel modulo che continua, dopodichč mi accorgo di dover 
tornare a pagina precedente per modificare il campo "prova", lo faccio e 
proseguo, ma nella pagina successiva vedo che tale variabile č sempre con 
il valore vecchio. Faccio delle prove e posto il codice usato.
-- 
Effe8

 posted this:


Appunto, evita di usare session_register, ma basa tutto su $_SESSION (con
tanto di isset, unset ed altri animali).
Esempio assegnare un valore da un form in post:
<?php
  session_start();
  if (isset($_SESSION['nome']))
  	echo "cambio ora<BR>";
  $_SESSION['nome']=$_POST['nome'];
?>

 tanto di isset, unset ed altri animali).
Allora, dato il seguente file "prova2.php"
-----inizio-----
<?php session_start(); ?>
<html>
<head>
<title>Documento senza titolo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form action="prova2.php" method="post">
<input name="nome" type="text" id="nome">
<input type="submit" name="Submit" value="Invia">
</form>
<?php
  if (isset($HTTP_SESSION_VARS['nome']))
 	echo "cambio ora<BR>";
  $HTTP_SESSION_VARS['nome']=$HTTP_POST_VARS['nome'];
echo "<br><br>ultima modifica alle: ".date("d/m/Y H:i:s.", 
filemtime(basename($HTTP_SERVER_VARS["PHP_SELF"]))); 
?>
</body>
</html>
------fine-----
Non funziona nulla, ovvero inserisco la variabile e poi mi viene richiamata 
la pagina senza visualizzare sotto il campo il valore dello stesso. Ho PHP 
4.03 e non posso aggiornarlo.
-- 
Effe8

 4.03 e non posso aggiornarlo.
Informatica: "non funziona nulla" e' un approccio subottimale.
Non vedo dove dovrebbe appare $HTTP_SESSION_VARS['nome']!?!
Eventualmente prova con (capendo pero' come deve essere il flusso dei dati):
  if (isset($HTTP_POST_VARS['nome']))
    $HTTP_SESSION_VARS['nome']=$HTTP_POST_VARS['nome'];
 
  if (isset($HTTP_SESSION_VARS['nome']))
    $nome=$HTTP_SESSION_VARS['nome'];
  else
    $nome="nome non settato, cambia please";
  echo "<input name=\"nome\" type=\"text\" value=\"$nome\">";
 

   echo "<input name=\"nome\" type=\"text\" value=\"$nome\">";
Ti ringrazio della pazienza che stai portando. Bando alle ciance, ho fatto 
un errore grossolano infatti nel listato che ho dato prima bastava 
aggiungere:
echo $HTTP_SESSION_VARS['nome'];
per vedere la variabile che cambia ogni volta che la modifico, mentre se 
aggiorno la pagina senza inviare il modulo la variabile resta la stessa e 
fin qui tutto ok. 
Ora che mi sembrava di aver risolto il problema - abbandonando anche l'uso 
di session_register() - mi ritrovo che le variabili non sono memorizzate 
nelle sessioni. 
Esempio pratico costituito da tre file prova1.php, prova2.php e prova3.php
------prova1.php------
<html>
<head></head>
<body>
<form action="prova2.php" method="post">
<input name="variabile1" type="text">
<input type="submit" name="Submit" value="Invia">
</form>
</body></html>
-----prova2.php-----
<?php session_start(); ?>
<html>
<head></head>
<body>
<?php
$HTTP_SESSION_VARS['variabile1']=$variabile1;
echo "Variabile1 = ".$HTTP_SESSION_VARS['variabile1']."<br>";
?>
<form action="prova3.php" method="post">
<input name="variabile2" type="text">
<input type="submit" name="Submit" value="Invia">
</form>
</body>
</html>
------prova3.php------
<?php session_start(); ?>
<html>
<head></head>
<body>
<?php
$HTTP_SESSION_VARS['variabile1']=$variabile1;
$HTTP_SESSION_VARS['variabile2']=$variabile2;
echo "Variabile1 = ".$HTTP_SESSION_VARS['variabile1']."<br>";
echo "Variabile2 = ".$HTTP_SESSION_VARS['variabile2']."<br>";
?>
</body>
</html>
---------------------
Il problema č che la variabile1 non me la ritrovo piů nell'echo del terzo 
file. Perchč?
-- 
Effe8

 file. Perchč?
A questo punto ho provato ad abbondanere il discorso $HTTP_SESSION_VARS ed 
ho ripreso il discorso REGISTER_SESSION() con i soliti tre file di prova 
che adesso chiameremo prova4.php prova5.php e prova6.php
------prova4.php-------
<html>
<head></head>
<body>
<form action="prova5.php" method="post">
<input name="variabile1" type="text">
<input type="submit" name="Submit" value="Invia">
</form>
</body>
</html>
------prova5.php-------
<?php session_start(); ?>
<html>
<head></head>
<body>
<?php
session_register('variabile1');
echo "Variabile1 = ".$variabile1;
?>
<form action="prova6.php" method="post">
<input name="variabile2" type="text">
<input type="submit" name="Submit" value="Invia">
</form>
</body>
</html>
------prova6.php-------
<?php session_start(); ?>
<html>
<head></head>
<body>
<?php
session_register('variabile2');
echo "Variabile1 = ".$HTTP_SESSION_VARS['variabile1']."<br>";
echo "Variabile2 = ".$HTTP_SESSION_VARS['variabile2']."<br>";
?>
</body>
</html>
-------------------------------------
Ok, qui mi ritrovo la variabile correttamente registrata nella sessione, ma 
se una volta arrivato al file prova6.php o prova5.php torno indietro al 
file prova4.php e cambio il valore del campo, una volta premuto il tasto 
invio con sorpresa mi ritrovo visualizzato sempre il vecchio valore. Spero 
di essermi spiegato e anche di riuscirne a venire a capo.
-- 
Effe8

Vi prego aiutatemi, non so più dove sbattere la testa, mi rendo conto che è 
una cavolata, ma più cerco e provo, più non ci capisco nulla.
-- 
Effe8