-
Le informazioni contenute nell'array $_POST si perdono cambiando pagina.
Se vuoi mantenerle ti conviene utilizzare le sessioni...Ad esempio potresti utilizzare questo codice nella pagina che riceve i dati dal form
session_start(); foreach ($_POST as $k => $v) { $_SESSION[$k]=$v; }
In questo modo, gli stessi dati in $_POST che perderesti cambiando pagina, te li ritrovi, con gli stessi indici, in $_SESSION su tutte le pagine dove la sessione è aperta con session_start() fino alla chiusura del browser.
-
Perfetto, ma siccome i dati che andrei ad immettere sono davvero tanti, non è che poi appesantisco il database ?
-
Se c'è un modo per mantenere il classico _POST credo sia meglio, cmq ti ringrazio per il codice delle sessioni (che mi tornerà senza dubbio utile!)
-
Per mantenere il post lo devi reinviare con un altro form... dipende come è strutturata l'applicazione.
Se devi passare da una pagina all'altra cliccando su un link basta mettere un form al posto del link, con tutti i campi nascosti che duplicano il form iniziale.
Poi, nella pagina successiva, devi acquisire nuovamente i dati e ripetere la procedura per passare ad un'altra pagina...Un po' macchinoso.
Comunque, sessioni e database sono due cose diverse.
-
Ok, nella prima pagina "a.php" apro la sessione e avvio il ciclo foreach, ad esempio qui ho un campo "nome", nella seconda pagina "b.php" come richiamo faccio a richiamarla?
-
Se, ad esempio, nel form hai:
<input name="nome1" />
inviando il form, nella pagina che riceve i dati avrai:
$_POST['nome1']='quello che hai digitato nel campo input';
Ora, se cambi pagina perdi il valore di $_POST ovverosia $_POST['nome1'] non conterrà più nulla...
Se però "copi" il contenuto di $_POST in $_SESSION tramite il codice che ho postato prima, ti ritroverai:$_SESSION['nome1']='quello che hai digitato nel campo input';
in tutte le pagine php con sessione avviata e non perderai il valore contenuto sino alla chiusura del browser o alla scadenza della sessione.
Chiaro?
Prova tu stesso: www.tigrone.altervista.org/prova_post.php
Noterai che, nella prima pagina dopo il form, hai i 2 array con i valori memorizzati... se clicchi sul link della pagina successiva, l'array post sarà vuoto mentre la sessione mantiene i dati memorizzati.
-
Ciao,
prova a fare così:<form id="form1" name="form1" method="post" action="a.php">
<input type="input" name="variabile" value="Variabile">
<input type="submit" name="zz" value="Invia" />
</form>Ecco adesso il form invia alla pagina a.php
ti puoi fare la seguente condizione in alto alla pagina a.php:<?php
if ($_POST['zz']){
$variabile = mysql_real_escape_string($_POST['variabile']);
header("Location: b.php?variabile=$variabile");
}
?>Mentre nella pagina b.php fai la condizione:
$variabile = mysql_real_escape_string($_GET['variabile']);echo $variabile; //ECCO LA NOSTRA VARIABILE NELLA PAGINA B.PHP
Fammi sapere..
-
Lui parlava di "veramente tanti dati" quindi passare stringhe col metodo GET non mi sembra appropriato...
La funzione mysql_real_escape_string() si usa appena prima di inserire i dati nel db... e una volta sola; nel codice che hai postato non ti permetterebbe di recuperare il valore originale immesso nel campo input se quest'ultimo contenesse un apice o un doppio.
-
Ciao,
allora fai conto che nella pagina b.php lui vorrebbe inserire i dati nel database e tu metti il controllo solo una volta chiunque può manomettere il link..!
nella pagina b.php se vuole inserire i dati nel database deve per sicurezza lasciare mysql_real_escape_string...poi se più esperto di me vedi tu..
Grazie
-
Boh... sono disarmato...
Hai letto cosa ho scritto?
E hai testato il codice che hai postato?
-
ciao,
si ho testato..
il primo mysql_real_escape_string si può evitare..boh non lo so..
grazie
-
Grazie per le soluzioni, in questo caso ho cambiato la struttura evitando il problema, tuttavia rimane la curiosità: se qualcuno sa risolvere il quesito sarebbe interessante!
-
Il POST non puoi reinviarlo mediante un redirect normale, dovresti mandare un output con un form che venga inviato automaticamente in javascript. Non è il massimo da fare come cosa.
Comunque solitamente si tende ad utilizzare di più il database, piuttosto che fare operazioni di questo tipo, per fare inserimenti multipli di qualcosa.