2010-10-21 6 views
2

У меня есть HTML-форма. Скажем, я заполняю все поля и отправляю их (здесь работает скрипт PHP). Затем я хочу вернуться к форме, используя кнопку «Назад» моего браузера. То, что я вижу, это пустая форма. Что мне делать, чтобы сохранить сохраненные данные на странице после того, как я вернусь к ней с помощью кнопки «Назад» в браузере?Сохранение данных в HTML-форме

Спасибо!

ответ

3

Если вы используете кнопку «Назад» вашего браузера, ваш браузер отвечает за повторное заполнение ваших данных формы.

0

Вы можете хранить данные в сеансе и повторно заполнять его с помощью сеансов PHP. Вы должны создать отдельную кнопку возврата, которая приведет вас к предыдущей странице.

Пример:

Хранение данных:

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

В HTML-формы:

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

Ссылка на $ _SESSION [ «данные»] вызовет исключение в первый раз, когда форма загружается, если она не была уже определена. –

+0

Спасибо! Но я надеялся найти способ, чтобы кнопка браузера позволяла мне хранить данные. – vlevsha

1

Обычно эта функциональность обрабатывается браузером, однако, если вы хотите «принудительно» поля всегда должны быть предварительно заполнены данными пользователя, вы можете сохранить $ _ POST в session variable и использовать это для загрузки формы.

Пример:

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

Тогда на реальной странице формы, вы можете проверить, существует ли данные сеанса. Он не будет, если форма загружается в первый раз, но это будет, если пользователь отправляет форму, а затем нажимает на кнопку браузера назад:

// 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 
    ... 
} 

Обратите внимание, что вы должны вызывать session_start() перед выводом любого HTML.

+0

Это то, что я подозревал. Таким образом, СЕССИЯ неизбежна. Будь как будет. :) Большое спасибо! – vlevsha

+0

isset ($ _ POST) ВСЕГДА ... –

+0

@YuriKolovsky: Вы правы. Вы хотите сделать 'isset ($ _ POST [" name_of_form "])' или аналогичный –

1

магазин значение в сеансе

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... 
} 

затем на странице формы

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

, очевидно, выше, может быть упрощена, но ради примера в это лучше.

(убедитесь, чтобы очистить старые данные формы в конечном счете)

Смежные вопросы