Создайте файл cookie с флагами secure и httponly для отображения баннера.Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Создайте файл cookie с флагами secure и httponly для отображения баннера.

Сообщение Anonymous »

У меня недостаточно опыта в PHP и JavaScript, но я пытаюсь создать для себя небольшой веб-сайт.
На этом веб-сайте я хочу отображать небольшой баннер с текстом внутри когда новый пользователь впервые заходит на мой сайт (какой бы веб-страница ни была). Баннер имеет следующие характеристики:
  • При первом отображении он остается на экране в течение 7 секунд (чтобы пользователь мог его прочитать)
    После его исчезновения пользователь может продолжать просматривать сайт и страницы, больше не видя баннер.
Что нужно сделать Итак, я подумал создать плагин (для WORDPRESS), который создает файл cookie, назовем его Banner_read. После исчезновения баннера создается файл cookie, и его наличие не приводит к созданию баннера. Файл cookie действителен только для сеанса (файл cookie сеанса).
В первый раз я создал баннер и файл cookie с помощью кода JavaScript, также установив флаг «безопасно». Код JavaScript проверяет наличие файла cookie и, если он не существует, создает баннер (с его настройками). Если я ограничусь этим, код будет работать. В частности, баннер отображается в течение семи секунд, а файл cookie создается после его исчезновения, в зависимости от того, какая веб-страница отображается первой.
Тогда на всякий случай, а также из любопытства я хотел еще установить флаг «httponly», но, насколько я понимаю, это нужно делать через php-код, так как код javascript (для проверки наличия куки) не работает, если httponly установлен флаг.
Я пытался создать код PHP для проверки существования файла cookie и его создания, а также код JavaScript для отображения баннера, но этот код, похоже, не работает. В частности, баннер не отображается и файл cookie создается сразу.
Может быть, для этого простого файла cookie мне не нужны оба флага, но, не зная предмета глубоко, я бы предпочитаю перестраховаться.
Первый код – я сообщаю здесь о работающем коде JavaScript (файл CSS для стилизации является внешним):

Код: Выделить всё


document.addEventListener('DOMContentLoaded', function() {
if (!document.cookie.split('; ').find(row => row.trim().startsWith('banner_read='))) {
var banner = document.createElement('div');
banner.id = 'cookie-banner';
banner.className = 'cookie-banner';
banner.innerHTML = '
TEXT HERE
';
document.body.appendChild(banner);

setTimeout(function() {
banner.classList.add('hide');
document.cookie = "banner_read=true; path=/; Secure; SameSite=Strict";
}, 7000); // 7 seconds
}
});


Второй код — здесь код PHP и Javascript, который не работает:

Код: Выделить всё


document.addEventListener('DOMContentLoaded', function() {
var banner = document.createElement('div');
banner.id = 'cookie-banner';
banner.className = 'cookie-banner';
banner.innerHTML = '
TEXT HERE
';
document.body.appendChild(banner);

setTimeout(function() {
banner.classList.add('hide');
}, 7000); // 7 seconds
});


Вот CSS-файл:

Код: Выделить всё

/* css/custom-cookie-manager.css */
.cookie-banner {
position: fixed;
bottom: 0;
width: 100%;
background-color: #000;
color: #fff;
text-align: center;
height: auto;
z-index: 1000;
font-size: 12px;
display: flex;
align-items: center;
justify-content: center;
padding: 14px 20px 0 20px;
box-sizing: border-box;
}

.cookie-banner.hide {
visibility: hidden;
}
Я пытался создать PHP-код для проверки существования файла cookie и его создания, а также код JavaScript для отображения баннера, но код не работает должным образом.Проблемы
  • Куки создаются сразу, еще до исчезновения баннера (а я хочу после его исчезновения )
  • Даже если файл cookie установлен, баннер отображается, если пользователь переходит с веб-страницы на домашнюю страницу (example.com/login на example.com). Между другими страницами этого не происходит.
Обновить
Я попробовал начальную версию отладка с некоторыми сообщениями журнала в коде JavaScript и после установки файла cookie

Код: Выделить всё

// Add the cookie banner
function custom_cookie_manager_banner() {
if (!isset($_COOKIE['banner_read'])) {
?>

document.addEventListener('DOMContentLoaded', function() {
console.log('Document loaded. Adding cookie banner...');
var banner = document.createElement('div');
banner.id = 'cookie-banner';
banner.className = 'cookie-banner';
banner.innerHTML = '
TEXT HERE
';
document.body.appendChild(banner);

console.log('Cookie banner added to the DOM.');

setTimeout(function() {
console.log('Hiding cookie banner...');
banner.classList.add('hide');
}, 7000); // 7 seconds
});



console.log('set cookie..');



Подробнее здесь: [url]https://stackoverflow.com/questions/78812862/create-a-cookie-with-the-secure-and-httonly-flags-to-display-a-banner[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»