XF 2.3 Плагин ограничение 18+

Статус
В этой теме нельзя размещать новые ответы.
Версия XenForo
2.3

faster

Проверенные
Сообщения
109
Реакции
72
Баллы
8,135
Здравствуйте. Нужно, чтобы при входе на форум появлялось окошко подтверждения возраста. Вам есть 18? Дальше, если отвечает - да, то форум открыт, если отвечает - нет, то закрыт.

Есть такое?
 
ну так если нет по факту 18, нажать кнопку что есть и все открыто :)
Понятно, что формально, но определенно должно быть. Как сделать такую функцию ума не приложу
 
Понятно, что формально, но определенно должно быть. Как сделать такую функцию ума не приложу
Привет, вот банальный и не особо красивый способ хотелки. 🧐
PHP:
<?php
session_start();

// Функция для проверки возраста
function checkAge($age)
{
    $min_age = 18; // Минимальный возраст для доступа
    return $age >= $min_age;
}

// Если данные возраста отправлены через форму
if (isset($_POST['age'])) {
    $age = (int)$_POST['age'];

    // Сохраняем возраст в сессии, если проверка пройдена
    if (checkAge($age)) {
        $_SESSION['age_verified'] = true;
        header("Location: index.php"); // Перенаправляем на основную страницу
        exit();
    } else {
        header("Location: access_denied.php"); // Перенаправляем на страницу отказа
        exit();
    }
}

// Проверка на наличие подтверждения возраста в сессии
if (!isset($_SESSION['age_verified'])) {
?>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Подтверждение возраста</title>
    </head>
    <body>
        <h1>Подтверждение возраста</h1>
        <form method="post">
            <label for="age">Введите ваш возраст:</label>
            <input type="number" id="age" name="age" required>
            <button type="submit">Подтвердить</button>
        </form>
    </body>
    </html>
<?php
    exit();
}
?>

Интегрируй его в свой index.php, в начало сценария!

И ещё можешь установить второй уровень проверки возраста при регистрации:
Screenshot_2.png
И соответственно можешь скрыть форумы для незарегистрированных, поэтому будет 100% подтвержден возраст, так как прошли регистрацию а не просто ввели цифру 18 в проверку возраста. 😃
 
Я всегда нажимал, что мне есть 18 даже когда не было.
Ну то, что нажимать можно что угодно, это понятно. Но по закону должно быть предупреждение/согласие такое на конкретных тематиках
 
  • Мне нравится
Реакции: Len
faster

Да нафиг плагин?
Вот, воткни в page_container (отображать только для гостей) и не парься:
Код:
<style>
#age-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.85);
    z-index: 99999;
    display: flex;
    align-items: center;
    justify-content: center;
}
#age-box {
    background: #1f1f1f;
    color: #fff;
    padding: 30px;
    max-width: 420px;
    width: 90%;
    text-align: center;
    border-radius: 10px;
    box-shadow: 0 0 30px rgba(0,0,0,.6);
}
#age-box h2 {
    margin-bottom: 15px;
}
#age-box button {
    margin: 10px;
    padding: 10px 20px;
    font-size: 15px;
    cursor: pointer;
    border: none;
    border-radius: 6px;
}
#age-yes {
    background: #2ecc71;
    color: #000;
}
#age-no {
    background: #e74c3c;
    color: #fff;
}
</style>

<div id="age-overlay" style="display:none;">
    <div id="age-box">
        <h2>Подтвердите возраст</h2>
        <p>Данный форум предназначен для пользователей старше 18 лет.</p>
        <button id="age-yes">Мне есть 18</button>
        <button id="age-no">Мне нет 18</button>
    </div>
</div>

<script>
(function () {
    if (localStorage.getItem('age_verified') === 'yes') return;

    var overlay = document.getElementById('age-overlay');
    overlay.style.display = 'flex';

    document.getElementById('age-yes').onclick = function () {
        localStorage.setItem('age_verified', 'yes');
        overlay.remove();
    };

    document.getElementById('age-no').onclick = function () {
        window.location.href = 'https://www.google.com';
    };
})();
</script>
 
faster ну или вот с куки и таймером, 30 дней живёт сессия:
Код:
<style>
#age-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.85);
    z-index: 99999;
    display: flex;
    align-items: center;
    justify-content: center;
}
#age-box {
    background: #1f1f1f;
    color: #fff;
    padding: 30px;
    max-width: 420px;
    width: 90%;
    text-align: center;
    border-radius: 10px;
}
#age-box button {
    margin: 10px;
    padding: 10px 22px;
    font-size: 15px;
    cursor: pointer;
    border: none;
    border-radius: 6px;
}
#age-yes { background: #2ecc71; color: #000; }
#age-no { background: #e74c3c; color: #fff; }
</style>

<div id="age-overlay" style="display:none;">
    <div id="age-box">
        <h2>Подтвердите возраст</h2>
        <p>Форум содержит материалы 18+</p>
        <button id="age-yes">Мне есть 18</button>
        <button id="age-no">Мне нет 18</button>
    </div>
</div>

<script>
(function () {

    function setCookie(name, value, days) {
        var date = new Date();
        date.setTime(date.getTime() + (days*24*60*60*1000));
        document.cookie = name + "=" + value + "; expires=" + date.toUTCString() + "; path=/";
    }

    function getCookie(name) {
        var match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));
        return match ? match[2] : null;
    }

    if (getCookie('age_verified') === 'yes') return;

    var overlay = document.getElementById('age-overlay');
    overlay.style.display = 'flex';

    document.getElementById('age-yes').onclick = function () {
        setCookie('age_verified', 'yes', 30); // ← 30 дней
        overlay.remove();
    };

    document.getElementById('age-no').onclick = function () {
        window.location.href = 'https://www.google.com';
    };

})();
</script>
 
Статус
В этой теме нельзя размещать новые ответы.
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу