Cookie

Last update: 28 Лютого, 2023

Category: Cookie, JavaScript Code Examples, PHP code examples

Мы рассматриваем php + js

Работа с cookies с php

Установить cookie для всего сайта, php:

setCookie('name', 'value', time() + 3600, '/', 'sapid.info');

Получить куки по имени:

htmlspecialchars($_COOKIE["name"])

Получить все куки в цикле:

 

Работа с cookies с js

Установить куки для всего сайта:

$.cookie(name, 'some_text', { expires: 7, path: '/'} );

Получить куки по названию:

alert($.cookie(name));

Скрипты в качестве примера:

<script type="text/javascript">
function getCookie(name) {
  let matches = document.cookie.match(new RegExp(
    "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
  ));
  return matches ? decodeURIComponent(matches[1]) : undefined;
}

function setCookie(name, value) {
    options = {
        path: '/',
        secure: true,
        'max-age': 3600,
        'domain' : '.domain.com.ua'
    };
    if (options.expires instanceof Date) {
        options.expires = options.expires.toUTCString();
    }
    let updatedCookie = encodeURIComponent(name) + "=" + encodeURIComponent(value);
    for (let optionKey in options) {
        updatedCookie += "; " + optionKey;
        let optionValue = options[optionKey];
        if (optionValue !== true) {
            updatedCookie += "=" + optionValue;
        }
    }
    document.cookie = updatedCookie;
}
</script>

Установка куки работает как:

setCookie('name', '0');

Считывание соответственно:

getCookie("name") // - получить
parseInt(getCookie("name"), 10) // - округлить до целого
( parseInt(getCookie("name"), 10) || 0 ) // - проверяем установлены ли числовые куки

 

 

Хранение в cookie согласия пользователя

<?php if ( $_COOKIE["agreement"] != 'accepted') : ?>
<div id="agreement">
    Текст соглашения
    <span id="accepted">СОГЛАСЕН!</span>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<script type="text/javascript">
$( document ).ready(function() {
    $( "#accepted" ).click(function() {
        var myDate = new Date();
        myDate.setMonth(myDate.getMonth() + 12);
        document.cookie = "agreement=accepted; expires=" + myDate + "; domain=.mels.industries; path=/";
        document.getElementById('agreement' ).style.display = 'none';
    });
});
</script>
<?php endif; ?>