Как получить при обращении к хостингу данные из адресной строки браузера и точного времени сервера?
Какой код нужно поместить на хостинге, чтобы
по обращению из клиентского браузера
получать, например, следующее:
my_name.myhost.org/info_01
<html>
<head>
<meta name="color-scheme" content="light dark">
<meta charset="utf-8">
</head>
<body>
<pre>{"id": "info_01", "dt": "2025-08-17T18:55:12+08:00"}</pre>
</body>
</html>
my_name.myhost.org/info_02
<html>
<head>
<meta name="color-scheme" content="light dark">
<meta charset="utf-8">
</head>
<body>
<pre>{"id": "info_02", "dt": "2025-08-17T18:55:16+08:00"}</pre>
</body>
</html>
т.е. выводить в браузере значения:
id - взятое из строки обращения,
dt - время сервера хостинга, в момент получения запроса сервером
или в момент ответа сервера.
Дату-время сервера нужно получить максимальной точности, если возможно,
- то отдельно передать (добавить в вышеприведенный json)
в мкс все доступные пары значений, например:
dt1 (время получения запроса сервером) - ... мкс,
dt2 (время отправки ответа сервером) - ... мкс.
В данном случае получать в браузере клиентское время не основная задача,
но также вывести точное клиентское (до мкс), - лишним не будет.
тег php, потому что вы хотите в виде ответа код на PHP?
Если на js сделать приведенное выше невозможно, то может так:
на хостинге создать файлы
my_name.myhost.org/info_01.php
my_name.myhost.org/info_02.php
в каждом код, типа:
<?php
$date = new DateTime();
$dt = $date->format("Y-m-d H:i:s.u");
$info = mb_substr(basename($_SERVER['REQUEST_URI'], '?' . $_SERVER['QUERY_STRING']), 0, -4);
echo "<!DOCTYPE html>
<html lang=\"en\">
<head>
<meta charset=\"utf-8\">
<meta http-equiv=\"expires\" content=\"0\" />
<meta http-equiv=\"Cache-Control\" content=\"no-cache\" />
<link href=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII\" rel=\"icon\" type=\"image/x-icon\" />
<title>info_01</title>
</head>
<body><pre>{\"id\":\"{$info}\", \"dt\":\"{$dt}\"}</pre></body>
</html>"
?>
только откорректировать с учетом вопроса.
Ответы (1 шт):
Смотря, что у вас там на хостинге крутиться. (Я про серверный язык/CMS) Самый банальный вариант, это написать на чистом JS а данные вставляемые в шаблон HTML документа. Первый параметр из Заголовка забирать, а вторым забирать Время и выводить. Такое постоянно на всяких гемблиговых заманухах ставят... по типу персонализированая реклама.
(async function () {
const pre = document.querySelector('pre');
const segments = location.pathname.split('/').filter(Boolean);
const id = segments.length ? segments[segments.length - 1] : 'root';
// Попробуйте получить время сервера из заголовка HTTP «Date» с помощью запроса HEAD с того же источника.
async function fetchServerDate(url) {
try {
const res = await fetch(url, { method: 'HEAD', cache: 'no-store', redirect: 'follow' });
const dateHeader = res.headers.get('Date');
return dateHeader ? new Date(dateHeader) : null;
} catch (_) {
return null;
}
}
// текущий URL; Резервный: корневой каталог (помогает, когда сама страница обслуживается из кэша/CDN-слоя)
let serverDate = await fetchServerDate(location.href);
if (!serverDate) serverDate = await fetchServerDate(location.origin + '/');
// Если дата сервера недоступна (редко из-за CORS или экзотического хостинга), переключитесь на часы клиента.
const dtDate = serverDate || new Date();
const isoWithOffset = dtDate.toISOString().replace('Z', '+00:00');
pre.textContent = JSON.stringify({ id, dt: isoWithOffset }, null, 0);
})();
<pre>{"id": null, "dt": null}</pre>
Но тут надо ещё предусматривать, что пользователи могут пойти по "не правильных" адрессах + если пользователя было средирекшено на такую страницу, то тоже может не работать. (надо проводить тесты)