使用会话和cookie更好


use of session and cookies what is better

我想获得第一次加载页面时的当前时间,然后将该时间与当前时间进行比较,只有当与第一次加载该页面的时间相差超过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();
      }
  }

这段简单的代码不起作用吗?有人能说出来吗?

客户端.cookies是最好的选择。它将让服务器不知道(在内存和处理时间方面)客户端上正在发生的事情。如果该窗口应该通过javascript在客户端上打开,而您与服务器上存储的时间没有任何关系。

会话通常用于为应用程序逻辑唯一标识客户端(类似于用户登录会话)。如果你不需要唯一地识别用户,我建议你使用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";
    }
}
?>