基于时间和日期的php重定向

时间:2011-09-06 20:03:45

标签: php datetime redirect

我正在尝试根据时间和日期将页面重定向到另一个页面。我希望能在星期三晚上7点之间切换它。晚上8点,然后是星期日上午10点30分到11点30分。

我能够让它工作,虽然从第二页发送回第一页是我遇到的问题。

这是我正在使用的代码

<?php
$hour = date('G');
$minute = date('i');
$day = date('w');
$m = $hour * 60 + $minute; // Minutes since midnight.
if(
  $day == 7 // Sunday...
  && $m >= 615 // ... after 10:15…
  && $m <= 700 // ... but before 11:40…
) header("Location: open.php");
else if(
$day == 3 // Wednesday...
  && $m >= 1125 // ... after 18:45…
  && $m <= 1235 // ... but before 20:35…
) header("Location: open.php");

我已尝试切换数字,但我遇到错误,或者没有重定向。

3 个答案:

答案 0 :(得分:1)

星期日是0而不是7(php date

  

w |星期几的数字表示 0(星期日)到6(星期六)

这可能会导致错误。

答案 1 :(得分:0)

以下是我要尝试的一些事情:

首先,星期日== 0,不是7 。星期六== 6.以及他们之间的其他一切。

设置一个时区,只要你在其他地方有一个默认设置,使得两个语句都不成立。

在代码顶部使用date_default_timezone_set()。我在中央时间,所以我会设置

date_default_timezone_set('America/Chicago');

我可以在php.ini的“date.timezone = America / Chicago”行更改默认设置,然后我将其更改为英国某处。

我在评论中看到你添加了。

if($day == 7 && $m >= 700 && $day == 3 1125)

格式正确,星期日为0。

if($day == 0 && $m >= 700 && $day == 3 && $m <= 1125)

起初,我确实给了你一个不好的答案,但我看到你要做的事情。问题是,从周日到周三每天只有700 - 1125 才能实现。因此,在周一630,这将是错误的。对于您想要执行的操作,if语句的格式不正确,但您可能希望在您的条件中使用时间戳。

回答原始代码。试试这个:

<?php
date_default_timezone_set('/*ENTER YOUR TIME ZONE HERE*/ /*Find it here: http://www.php.net/manual/en/timezones.php*/');
$hour = date('G');
$minute = date('i');
$day = date('w');
$m = $hour * 60 + $minute; // Minutes since midnight.
if(
  $day == 0 // Sunday...
  && $m >= 615 // ... after 10:15…
  && $m <= 700 // ... but before 11:40…
) header("Location: open.php");
else if(
$day == 3 // Wednesday...
  && $m >= 1125 // ... after 18:45…
  && $m <= 1235 // ... but before 20:35…
) header("Location: open.php");

希望能解决您的问题!

答案 2 :(得分:0)

最好与javascript结合使用。 问题是PHP在服务器端工作。所以当你收到一个php网页时,你的php代码已经编译好了。

在javascript中,您可以使用功能设置超时

来达到答案
setTimeout(function, milliseconds);

您可以通过计算当前日期与您希望重定向运行日期之间的差异来计算时间。

在javascript中重定向使用以下函数

// similar behavior as an HTTP redirect
window.location.replace("http://stackoverflow.com");

// similar behavior as clicking on a link
window.location.href = "http://stackoverflow.com";

希望这有助于您进一步寻找答案。