0

私は再び私の大学のプロジェクトで小さな問題に遭遇しました:(

<input type="text" name="timrem" value="" />

これは、データが必要な非表示フィールドです。

if(isset($_REQUEST['timrem']))
{
    $tim=$_REQUEST['timrem'];
}

これは、から値を取得するために使用されるコードですtimrem
変数timremは、ページのカウントダウンシーケンスを初期化するために使用されます(javascriptを使用して実装されます)

<span id="countdown-1" style="float:right"><?php echo $tim;?>

非表示フィールドの値は、実装されたJavaスクリプトカウンターを介して動的に変更されます。

sremtime=(parseInt(minRemain*60)) + (parseInt(secsRemain));
document.frmTest.timrem.value=sremtime;

これは、ページが送信されたときに正常に機能します。つまり、時間が次のページから再開されません。ただし、ページが更新されると、タイマーは$tim最初に開始されたときの値まで再起動されます。

ページの更新時に非表示の入力の値を何らかの方法で取得することは可能ですか?

また、次のページまでの経過時間を保存するためのアプローチについてコメントしてください。これはオンライン試験のプロジェクトです。

4

3 に答える 3

0

PHPページまたはデータベース(複数のユーザーの場合)にタイムスタンプを保存し、それを使用して$timを生成することをお勧めします。リクエストがトリガーされていないため、更新時にデータを渡すことはできないようです。

于 2013-01-30T13:52:24.493 に答える
0

変数を更新後も保持する必要がある場合、クライアントからサーバーに返される情報に依存することはできません。信頼できる唯一の情報は、最初のリクエストで渡された情報であり、明らかにあなたの時間は含まれていません。私が考えることができる最善の解決策は、サーバー上のセッション変数にタイムスタンプを保存することです。

session_start();
if(empty($_SESSION['timrem'])) $_SESSION['timrem'] = time(); // set this if it is the first time this page is loaded
$tim = time() - $_SESSION['timrem']; // $tim is now the number of seconds since the page was first loaded in this session

あなたのjavascriptはおそらくそれを必要とするでしょうが、あなたはそれを追跡するためにクライアントとサーバーの間で時間を前後に渡す必要はありません。

于 2013-01-30T14:04:49.540 に答える
0

URLに「目標時間」(残り時間のカウントダウン)を保存するのはどうですか。エポック時間で保存することもできます:

myurl.com/stuff.html?target_time=1359553896

そうすれば、ページが更新されてもページが手元にあり、そこから残り時間を計算できます。URL に含めたくない場合は、ページのどこかにdisplay:noneスタイルで隠すことができます。

このようなものはどうですか:

http://jsfiddle.net/QpZcV/1/

于 2013-01-30T13:53:49.857 に答える