Простые движки PHP, сайты SSI, программы, статьи Ключи к играм, пин-коды, игровые ценности, программы...

КЛЮЧИ К ИГРАМ, ПИН-КОДЫ, ИГРОВЫЕ ЦЕННОСТИ, ПРОГРАММЫ...

ГЛАВНАЯ WEB-МАГАЗИН МАРКЕТ ДВИЖКИ PHP САЙТЫ SSI ПРОГРАММЫ СТАТЬИ КОНТАКТЫ

КОРРЕКЦИЯ ВРЕМЕНИ СЕРВЕРА ДЛЯ СТРАНИЦ САЙТА

Первоначальный вариант

Время сервера для страниц сайта PHP можно скорректировать посредством функции date(). В каких случаях это может потребоваться?

Если сервер хостинга, на котором размещен сайт, находится, например, в Западной Европе, в 0-ой временной зоне (часовом поясе), соответствующей Гринвичскому меридиану (Лондон), а компьютер администратора сайта в 3-ей временной зоне (Москва), то разность во времени составляет 3 часа. Когда время в 3-ей временной зоне 18.00, то в 0-ой временной зоне 15.00. Поэтому, если на какой-либо странице сайта посредством скрипта:

<?php
echo date("d-m-y, H:i");
?>

выводится дата и текущее время, то администратор сайта, находящийся в 3-ей временной зоне, увидит на странице время, меньшее на 3 часа, по сравнению с временем таймера своего компьютера.

Оптимальным вариантом для этого случая был бы вывод времени 3-ей временной зоны, учитывая, что для жителей России, просматривающих, как правило, русскоязычные сайты, Московское время (МСК) более привычно.
Кроме этого, при использовании на сайте различных сервисов, таких как: Отправка сообщений, Гостевая книга, Комментарии, Регистрация и т.п., где используется функция date(), происходит запись данных в соответствующие файлы, в том числе и данных о времени. Использование МСК и для этого боле целесообразно.

Реализовать коррекцию времени может следующий скрипт:

<?php
$tz = 3;
$d = date("d"); $m = date("m"); $y = date("y");
$H = date("H"); $i = date("i");
if (!$tz == "") $H = $H + $tz;
if ($H >= 24) {$H = $H - 24; $d = $d + 1;}
$date = $d.'-'.$m.'-'.$y.','.' '.$H.':'.$i;
?>

В строке: $tz = 3;

переменной $tz присваивается значение разности между временными зонами (time zone) сервера и компьютера. Если сервер расположен восточнее местоположения компьютера, то разность вводится со знаком минус.

В строках: $d = date("d"); $m = date("m"); $y = date("y");
$H = date("H"); $i = date("i");

переменным присваиваются значения переменных функции date().

В строке: if (!$tz == "") $H = $H + $tz;

проверяется условие и, если оно истинно, переменной текущего часа $H присваивается значение, увеличенное на разность временных зон $tz.

В строке: if ($H >= 24) {$H = $H - 24; $d = $d + 1;}

проверяется условие и, если оно истинно, переменной текущего часа $H присваивается значение, уменьшенное на 24, а переменной числа даты $d присваивается значение, увеличенное на 1. Таким образом, если текущий час становится равным или большим 24 часов за счет добавления разности временных зон, то его значение приводится к необходимому соответствию, а число даты увеличивается на 1 после наступления полуночи по скорректированному времени.

В строке:

$date = $d.'-'.$m.'-'.$y.','.' '.$H.':'.$i;

переменной $date присваиваются значения скорректированных переменных функции date(). Для коррекции времени переменная $date должна быть использована в скриптах вместо функции: date("d.m.y, H:i").

Перед загрузкой файлов на сервер, нужно ввести в выражение переменой $tz число, соответствующее фактической разности временных зон местоположений компьютера и сервера. Скрипт должен быть размещен в начале файла index.php, или в файле, который подключается в начале файла index.php.

Для тестировании скрипта на компьютере, если установлен Денвер, или аналогичное приложение, необходимо добавить в скрипт строку:

echo $date;

После выполнения скрипта в окне браузера должны отобразиться дата и время, увеличенное на установленную разность временных зон, по сравнению со временем таймера компьютера. Для данного примера - увеличенное на 3 часа. Чтобы после выполнения скрипта в окне браузера отобразилось время, соответствующее времени таймера, нужно в скрипте предварительно установить:

$tz = 0;

Второй вариант

Этот вариант более оптимальный и рациональный. Скорректировать время возможно посредством найденной в расширенном Руководстве PHP функции strtotime().

Для ранее рассмотренного примера:

<?php
echo date('d-m-y, H:i', strtotime("+3 hours"));
?>

Если скрипт тестировать на компьютере, например, при использования Денвера, то отобразится время, большее на 3 часа, чем системное время компьютера администратора сайта. Если этот скрипт будет содержать страница, размещенная на сервере, расположенном западнее в соответствующей временной зоне, то при ее открытии выведенное время будет совпадать с системным временем компьютера.

Возможно использование переменой для разности временных зон:

<?php
$tz=3;
$date=date('d-m-y, H:i', strtotime("+$tz hours"));
echo $date;
?>