Я пытаюсь перенаправить страницу на другую страницу на основе времени и даты. Я ищу, чтобы он переключился в среду с 19:00 до 20:00, а затем в воскресенье с 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");
Я попытался переключить числа, но у меня либо была ошибка, либо она не перенаправлялась.
Воскресенье 0, а не 7 ( дата php )
w | Числовое представление дня недели | 0 (для воскресенья) до 6 (для субботы)
Это может привести к ошибке.
Вот несколько вещей, которые я хотел бы попробовать:
Во-первых, воскресенье == 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");
Надеюсь, это решает вашу проблему!
Лучше всего это сделать в сочетании с javascript. Проблема в том, что PHP работает на стороне сервера. Поэтому в то время, когда вы получили веб-страницу php, ваш php-код уже скомпилирован.
В javascript вы можете получить ответ, используя функцию set Time out
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";
Надеявшись, это помогло вам в поисках вашего ответа.