3

我想获取页面第一次加载时的当前时间,然后将该时间与当前时间进行比较,仅当与第一次加载页面时的差异超过 30 分钟时,才应打开一个新窗口。我想问我应该使用会话还是 cookie 来完成这一切?我已经厌倦了使用以下内容:

<input type="hidden" name="time_last_loaded" value="<?php echo strtotime(date("Y-m-d H:i:s")); ?>">

<?
if(isset($_POST['time_last_loaded']))
{
    $current_time = strtotime(date("Y-m-d H:i:s"));
    $time_last_loaded_plus_30_mins = strtotime('+30 minutes',  $_POST['time_last_loaded']));
    if($time_last_loaded_plus_30_mins <  $current_time)
    {
             echo "code works";
     }
}
?>

但它不起作用,有人可以尝试在我的编码中找到问题吗?谢谢!

我也试过这个

$time=time();
$timeend= $time + (1*60);
 for($i=1;$i<100;$i++)
  {
  while($time > $timeend)
  {
      echo "it works";
      $time=time();
      }
  }

这段简单的代码不起作用?任何人都可以告诉吗?

4

2 回答 2

6

client side.cookies 是要走的路。它会让服务器不知道客户端上发生的事情(在内存和处理时间方面)。如果应该通过javascript在客户端上打开窗口,并且您与服务器上存储的时间没有任何关系。

于 2012-07-15T07:19:00.397 回答
2

会话通常用于为您的应用程序逻辑唯一地标识客户端(类似于用户登录会话)。如果您不必唯一地识别用户,我建议您使用 Cookie。您也可以使用会话,但这将不必要地在服务器端进行一些处理,这看起来对您没有任何用处。由您决定。但是,如果您不需要唯一地识别用户,那么就选择 Cookie。

“如果相差超过 30 分钟,我会将该时间与当前时间进行比较,新窗口将打开”。我不太明白你的意思,所以我会尽量回答你的问题。

将打开新窗口可能意味着两件事:打开一个新窗口 (target="_blank") 或重定向到一个新 URL。如果您想做第一个,那么您想做的时间处理必须由 Javascript 完成和处理,因为您无法从服务器端在浏览器中打开新窗口。如果你想做第二个,你可以在客户端使用 JS 或在服务器端使用你使用的任何语言来实现。

至于您的代码片段,我认为您没有正确使用 strtotime() 。阅读: http: //php.net/manual/en/function.strtotime.php

我对你的代码做了一个小的改动。这应该可行,但我自己没有尝试过:>

<?
if(isset($_POST['time_last_loaded']))
{
    $current_time = strtotime(date("Y-m-d H:i:s"));
    $time_last_loaded_plus_30_mins = strtotime($_POST['time_last_loaded']) + 30*60;
    if($time_last_loaded_plus_30_mins <  $current_time)
    {
             echo "code works";
    }
}
?>
于 2012-07-15T07:41:05.713 回答