0

プロセスページを使用してすべての情報を確認してから処理するフォームを使用しています。何かが間違っていたり不足している場合、メッセージはユーザーにページに戻って修正するように伝えます。ただし、それを行うと、入力した他のすべての情報がフィールドに表示されません。彼らが入れたものは何でも表示されるようにするにはどうすればよいですか。

4

3 に答える 3

3

簡単な解決策は、投稿時にすべての POST データを SESSION 内に格納することです。

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

次に、フォーム ページで postdata が存在するかどうかを確認し、存在する場合は入力値を入力します。

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'] .'" />';
}

そんな感じ!楽しむ!

于 2011-01-27T06:39:20.440 に答える
2

最良の方法は、同じページで検証を行い、成功した場合にのみ別のページにリダイレクトすることです。

<?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>

または、セッションを使用します。

于 2011-01-27T06:23:33.650 に答える
1

javascriptまたはajaxを使用して同じページで検証を行います(サーバー側でチェックインする必要がある場合)

その後、データを失うことはありません

Web で多くの例を見つけることができます (ajax を使用したフォーム検証を探してください)。

この記事のように: http://jqueryfordesigners.com/demo/ajax-validation.php

于 2011-01-27T06:21:22.750 に答える