2010-10-21 10 views
2

J'ai un formulaire HTML. Disons que je remplis tous les champs et que je les soumets (le script PHP s'exécute ici). Ensuite, je veux revenir au formulaire en utilisant le bouton "Retour" de mon navigateur. Ce que je vois est la forme vide. Que dois-je faire pour conserver les données saisies sur la page après y être revenu en utilisant le bouton «Précédent» du navigateur?Conserver les données au format HTML

Merci!

Répondre

3

Si vous utilisez le bouton "Précédent" de votre navigateur, c'est votre navigateur qui est chargé de remplir à nouveau vos données de formulaire.

0

Vous pouvez potentiellement stocker les données dans la session et les rouvrir à l'aide de sessions PHP. Vous devriez créer un bouton de retour séparé qui vous amène à la page précédente.

Exemple:

Conservation des données:

$_SESSION['data'] = $_POST['item1']; 

Dans les formulaires HTML:

<input type="text" name="someinput" value="<?=$_SESSION['data']?>" /> 
+0

La référence à $ _SESSION [ « data »] provoquera une exception pour la première fois la forme est chargée si elle n'a pas déjà été défini. –

+0

Merci! Mais j'espérais trouver un moyen pour que le bouton du navigateur me laisse garder les données. – vlevsha

1

Habituellement cette fonctionnalité est gérée par le navigateur, si vous voulez "forcer" les champs à toujours être pré-rempli avec les données de l'utilisateur, vous pouvez stocker le $ _ POST les données dans un session variable et utilisez cela pour charger le formulaire.

Exemple:

// submission page 
session_start(); 
if(isset($_POST)){ 
    // save the posted data in the session 
    $_SESSION["POST"] = $_POST; 
} 

ensuite sur la page du formulaire réelle, vous pouvez vérifier si les données de session existe. Il ne sera pas si le formulaire est en cours de chargement la première fois, mais il si l'utilisateur soumet le formulaire, puis appuie sur le bouton Retour du navigateur:

// form page 
session_start(); 
if(isset($_SESSION["POST"])){ 
    // previous POST data has been saved 
    // build the form with pre-defined values from $_SESSION 
    ... 
} else { 
    // no previous data 
    // build the form without pre-defined values 
    ... 
} 

Notez que vous devez appeler session_start() avant la sortie du code HTML.

+0

C'est ce que je soupçonnais. SESSION est donc inévitable. Laisse faire. :) Merci beaucoup! – vlevsha

+0

isset ($ _ POST) est TOUJOURS vrai ... –

+0

@YuriKolovsky: Vous avez raison. Vous voudriez faire 'isset ($ _ POST [" nom_de_formulaire "])' ou similaire –

1

stocker la valeur dans une session

session_start(); 

//form so that you have all the potential forms in a single session array 
//form_1 to identify the form in question 

if(!empty($_POST)){ 
$_SESSION['forms']['form_1'] = $_POST;//if this is for the public internet, then I would really consider making sure that the posted data matches the received data... (and that its comming from YOUR form), which is way too long to post here... 
} 

puis sur la page du formulaire

<input name="flowers" value="<?php echo if(isset($_SESSION['forms']['forms_1']['flowers'])){ echo htmlspecialchars($_SESSION['forms']['forms_1']['flowers']);} ?>" /> 

évidemment ce qui précède peut être simplifiée, mais pour l'amour d'un exemple, il vaut mieux de cette façon.

(assurez-vous de nettoyer les anciennes données de formulaire par la suite)

Questions connexes