come memorizzare valori variables su più carichi di pagina

Sto creando uno script php che memorizza 3 arrays: $images , $urls , $titles base ai dati di input del module all'interno del file php.

Voglio printingre i valori di questi arrays nella prima parte della pagina e quindi precompilare i campi di input del module con il valore degli arrays. Inoltre, quando un utente modifica un field di input e fa clic su "Salva", la pagina dovrebbe essere ricaricata con la versione modificata.

Il mio problema è che su each chiamata del file php in un browser viene cancellato il valore delle variables. C'è un modo per memorizzare i valori dell'arrays in modo che il module venga sempre pre-riempito con gli ultimi valori salvati?

 <?php //save the arrayss with the form data $images = arrays($_POST["i0"],$_POST["i1"],$_POST["i2"],$_POST["i3"]); $urls = arrays($_POST["u0"],$_POST["u1"],$_POST["u2"],$_POST["u3"]); $titles = arrays($_POST["t0"],$_POST["t1"],$_POST["t2"],$_POST["t3"]); //print the arrayss print_r($images); print_r($urls); print_r($titles); //create the form and populate it echo "<p><form method='post' action='".$_SERVER['PHP_SELF']."';"; $x = 0; while ($x <= 3) { echo"<div> <input name='i".$x."' type='text' value='".$images[$x]."'> <input name='u".$x."' type='text' value='".$urls[$x]."'> <input name='t".$x."' type='text' value='".$titles[$x]."'>"; $x++; } ?> <br> <input type="submit" name="sumbit" value="Save"><br> </form> 

Memorizza le variables in una session PHP.

 session_start(); $_SESSION['images'] = $images; 

Quindi nella pagina successiva (o qualsiasi altra), è ansible recuperare i valori come:

 session_start(); $images = $_SESSION['images']; 

Cambiare l'ambito delle variables in un ambito più ampio, potrebbe fare il trucco. Inoltre, controlla se hai una richiesta di post prima di aggiornare i valori.

 <?php if(sizeof($_POST) >0) { //UPDATE VALUES } ?> 

Se vuoi una memory permanente di stato, tra pagine diverse , dovresti usare le sessioni, mettendo session_start(); all'inizio del tuo script. Dopodiché, tutte le variables $ _SESSION [$ x] verranno mantenute e saranno disponibili per gli script.

Tuttavia, in questo caso specifico, rispondendo alla tua domanda: "C'è un modo per memorizzare i valori dell'arrays in modo che il module venga sempre pre-riempito con gli ultimi valori salvati?", È più facile usare semplicemente la variabile $ _POST se esiste già:

 <?php if(!$_POST){ $_POST = arrays(); foreach(arrays("i0","i1","i2","i3") as $i) $_POST[$i]=""; foreach(arrays("u0","u1","u2","u3") as $i) $_POST[$i]=""; foreach(arrays("t0","t1","t2","t3") as $i) $_POST[$i]=""; } foreach($_POST as $k=>$v) filter_input(INPUT_POST,$k,FILTER_SANITIZE_SPECIAL_CHARS); //save the arrayss with the form data $images = arrays($_POST["i0"], $_POST["i1"], $_POST["i2"], $_POST["i3"]); $urls = arrays($_POST["u0"], $_POST["u1"], $_POST["u2"], $_POST["u3"]); $titles = arrays($_POST["t0"], $_POST["t1"], $_POST["t2"], $_POST["t3"]); //print the arrayss print_r($images); print_r($urls); print_r($titles); //create the form and populate it echo "<p><form method='post' action='".$_SERVER['PHP_SELF']."';"; $x = 0; while ($x <= 3) { echo"<div> <input name='i".$x."' type='text' value='".$images[$x]."'> <input name='u".$x."' type='text' value='".$urls[$x]."'> <input name='t".$x."' type='text' value='".$titles[$x]."'>"; $x++; } ?> <br> <input type="submit" name="sumbit" value="Save"><br> </form> 

Nota: questa row foreach($_POST as $k=>$v) filter_input(INPUT_POST,$k,FILTER_SANITIZE_SPECIAL_CHARS); dovrebbe essere sufficiente per proteggerti dagli attacchi XSS di base. Si noti inoltre che, in generale, è preferibile seguire lo schema di ricaricamento delle pagine con GET dopo il POST , il che rende less suscettibili alle risottopolazioni dei moduli, nel qual caso utilizzare le sessioni per lo storage è la soluzione migliore.

Ciò che mi ha portto qui era un tipo di animale piuttosto diverso. Ho avuto problemi con la successiva richiesta di post della telecamera IP AXIS e avevo bisogno di preservare l'ultimo nome di file tra le richieste. Nel caso in cui qualcuno inciampi qui alla ricerca di un modo per memorizzare le variables e SESSIONE non sia un'opzione, si dovrebbe dare un'occhiata a Alternative PHP Cache:

Nota: a differenza di molti altri meccanismi in PHP, le variables memorizzate usando apc_store () permarranno tra le richieste (finché il valore non sarà rimosso dalla cache).

http://php.net/manual/en/book.apc.php

È ansible utilizzare le sessioni per memorizzare valori e scrivere regole per riempire i campi module dopo le convalide sull'invio dei dati. Anche la function isset () è molto utile per evitare errori "non definiti".

La soluzione che stai cercando è la session. Usa $_SESSION per memorizzare il valore delle tue variables. Ad esempio, alla fine della sceneggiatura:

 $_SESSION['images'] = $images; 

e nell'input della forma:

 <input name='i".$x."' type='text' value='".(isset($_SESSION['images']) ? $_SESSION['images'] : '')."'>