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 にリダイレクトするという 2 つの意味があります。最初のものを実行したい場合は、サーバー側からブラウザーで新しいウィンドウを開くことができないため、実行したい時間処理を Javascript で処理する必要があります。2 つ目の方法を実行する場合は、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 に答える