Запомнить историю ввода - PullRequest
       21

Запомнить историю ввода

0 голосов
/ 27 января 2011

Я использую форму, которая использует страницу процесса для проверки и последующей обработки всей информации. Если что-то не так или отсутствует, сообщение предлагает пользователям вернуться на страницу и исправить это. Однако, когда они делают это, вся другая информация, которую они вводят, не отображается в полях. Как я могу сделать так, чтобы все, что они вставили, показывало.

Ответы [ 3 ]

3 голосов
/ 27 января 2011

Простым решением было бы сохранить все данные POST внутри СЕССИИ после их публикации.

if($_POST){ // if we have any POSTed variables...
    $_SESSION['postdata'] = $_POST; // set a browser session with all of the values
}

Затем на странице формы проверьте, существуют ли постданные, и если да, заполните входные значения.

if($_SESSION['postdata']){ // if postdata exists
    $p = $_SESSION['postdata']; // retrieve values in a new variable
    unset($_SESSION['postdata']); // unset session, because you don't want this post data to travel all around your website
    /* for each input or whatever you got there... */
    echo '<input name="your-key-here" type="text" value="'. $p['your-key-here'] .'" />';
}

Нечто подобное! Веселись!

2 голосов
/ 27 января 2011

Лучший способ - выполнить проверку на той же странице и перенаправить на другую страницу только при успешном завершении:

<?php
    if (!empty($_POST['foo'])) {
        // validate
        if (/* valid */) {
            // save data somewhere
            header('Location: nextpage.php');
            exit();
        }
    }
?>

<form action="samepage.php">
    <input name="foo" type="text" value="<?php if (!empty($_POST['foo'])) echo htmlentities($_POST['foo']); ?>">
    <?php if (/* foo was invalid */) : ?>
        <p class="error">Please fill in Foo!</p>
    <?php endif; ?>
</form>

В качестве альтернативы: использовать сеансы.

1 голос
/ 27 января 2011

сделать проверку на той же странице с помощью javascript или ajax (если вам нужно проверить на стороне сервера)

, тогда вы не потеряете данные

, которые вы можете найти вВ Интернете много примеров (ищите подтверждение формы с помощью ajax)

, как эта статья: http://jqueryfordesigners.com/demo/ajax-validation.php

...