Как установить ограничение на редирект на сайте, чтобы он срабатывал только один раз за 24 часа?

Как на веб-странице реализовать автоматический редирект в новой вкладке браузера после загрузки страницы с использованием куки для ограничения этого действия один раз в 24 часа для каждого уникального пользователя? <br/> <code>setTimeout(function(){window.open("ya.ru")},1000)</code>
  • 23 июня 2024 г. 8:31
Ответы на вопрос 2
Для реализации ограничения на редирект один раз в 24 часа для каждого уникального пользователя, можно использовать JavaScript и куки. 

Вот пример кода, который будет выполнять редирект в новой вкладке браузера после загрузки страницы, но только один раз в 24 часа для каждого пользователя:

```html
<!DOCTYPE html>
<html>
<head>
    <title>Редирект с ограничением</title>
</head>
<body>
    <script>
        // Функция для проверки наличия куки
        function getCookie(name) {
            var value = "; " + document.cookie;
            var parts = value.split("; " + name + "=");
            if (parts.length == 2) return parts.pop().split(";").shift();
        }

        // Проверяем, был ли уже выполнен редирект
        if (!getCookie("redirected")) {
            // Выполняем редирект
            setTimeout(function() {
                window.open("https://ya.ru");
                // Устанавливаем куку на 24 часа
                var now = new Date();
                var time = now.getTime();
                time += 24 * 60 * 60 * 1000; // 24 часа
                now.setTime(time);
                document.cookie = "redirected=true; expires=" + now.toUTCString() + "; path=/";
            }, 1000);
        }
    </script>
</body>
</html>
```

Этот код сначала проверяет наличие куки с именем "redirected". Если такой куки нет, то выполняется редирект на страницу "https://ya.ru" через 1 секунду. После успешного редиректа устанавливается куки с именем "redirected" на 24 часа.

Таким образом, каждый пользователь будет видеть редирект только один раз в течение 24 часов.
function setCookie(name, value, days) {
    const date = new Date();
    date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
    const expires = "; expires=" + date.toUTCString();
    document.cookie = `${name}=${value || ""}${expires}; path=/`;
}

function getCookie(name) {
    const nameEQ = `${name}=`;
    const cookies = document.cookie.split(';');
    for (const cookie of cookies) {
        let c = cookie.trim();
        if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length);
    }
    return null;
}

function checkRedirect() {
    const lastRedirect = getCookie("lastRedirect");
    const now = Date.now();

    if (!lastRedirect || now - parseInt(lastRedirect) > 24 * 60 * 60 * 1000) {
        setCookie("lastRedirect", now, 1);

        setTimeout(() => {
            window.open("https://ya.ru", "_blank");
        }, 1000);
    }
}

window.addEventListener('load', checkRedirect);
Похожие вопросы