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

您如何在您的网址中存储“目标时间”(剩余时间倒计时)。您甚至可以将其存储在纪元时间:

myurl.com/stuff.html?target_time=1359553896

这样,当页面刷新时,您仍然可以随身携带它,您可以从中计算剩余时间。如果你不想在你的 url 中使用它,你可以将它隐藏在页面上的某个地方display:none

像这样的东西怎么样:

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

于 2013-01-30T13:53:49.857 回答
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 回答