1

まず、シナリオについて説明します。ユーザーが私のサイトのフォームに入力するとします。フォームには約14個のフィールドが含まれる場合があります。7フィールドを完了した後、彼/彼女は誤って戻るか、ウィンドウを閉じるか、PCを再起動します。

彼/彼女が戻ってきたとき、7つのフィールドがいっぱいになったことを彼に示す方法はありますか?現在、処理するケースは3つあります。

メインページから戻るウィンドウを閉じるPCを再起動します。

これらすべての解決策はないかもしれません。1つと2つの状況しか処理できない場合は、それで問題ありません。

私はセッションについて知っていますが、これまでのところ、セッションで何かを保存するには、サイトを送信するか更新する必要がありますが、これは私の重要なケースではありません。

だから私はそれを行うための良い方法が必要ですか?

実際、私のサイトは各フォームで約20〜40のフィールドをホストします。したがって、ユーザーがタブを閉じたり戻ったりした場合に、ユーザーの回復を行うことが非常に重要です。

4

4 に答える 4

1

x秒ごとにセッションVIAajaxを設定することもできます。そうすれば、セッション値を保存するためにページを更新する際の問題を解消できます。

setInterval(function(){
     $.post("/ajaxLogin.php",{
            value: $("#value").val()
        }, 
        function(result){
            console.log('saved!');
      });
}, 2000);

そしてこれはajax経由で呼び出されるajaxLogin.phpです

<?php
    session_start();
    $_SESSION['value'] = $_POST["value"];
?>
于 2013-03-22T00:49:18.037 に答える
1

Webの世界では、通常行うことは、CookieまたはSessionsにデータを保存することです。Cookieは、有効期限が切れるまでユーザーのマシンに保存されますが、セッションの期間は通常短くなります(通常、サーバーの存続時間によって異なります)。

ユーザーが後で(再起動した後でも)離れて戻ってくることができる場合の1つのアプローチは、Cookieに保存することです。これにはPHPでsetcookieを使用して、データをシリアル化できます。

例:

setcookie("UserFormData", serialize($_POST), time()+3600);  /* expire in 1 hour */

差出人:http ://php.net/manual/en/function.setcookie.php

于 2013-03-22T00:49:52.093 に答える
0

Ajaxを使用してデータをセッションに保存できます...更新する必要はありません。フィールドの更新ごとに、またはいつでもajax呼び出しを行うことができます。ajax呼び出しはフォームの送信を待つ必要はありません。すべてのキー押下/キーアップで起動されます(推奨されていませんが)

于 2013-03-22T00:48:25.143 に答える
0

Cookieを作成/更新するonchange関数を作成できます。PHPを使用していて、私が提供したリンクの関数を使用していると仮定すると、入力ごとに特定のCookieを設定できます。

<input type="text" name="username" onchange="SetCookie('username',this.value,1);" value="<?=$_COOKIE['username'];?>" />

これは非常に面倒なようですが、もっと良い解決策があるかもしれません...

于 2013-03-22T00:50:58.860 に答える