КОнтакты, предложения, отзывы

.rar или .zip
Вложение
Онлайн-чат
На этом сайте, вы найдёте полезную информацию, практические советы в области веб-программирования, веб-дизайна и веб-разработок в целом. Мы с удовольствием поделимся с вами реальными примерами и решениями задач, связанных с jQuery , JavaScript , PHP и MySQL , версткой сайтов , поможем разобраться новичкам с современными технологиями, такими как Ajax , HTML5 , CSS3 и многими другими.

Cookies и WebStorage

И php, и javascript предоставляют возможность сохранения данных не стороне клиента. В php это cookies, в яваскрипт - WebStorage. Кроме того, с cookies можно работать и из javascript.

PHP и cookies

Для установки куки используется функция setcookie()::
setcookie ($name // имя куки
        [, $value // значение
        [, $expire = 0 // дата истечения срока жизни
        [, $path// Путь, из которого будут доступны cookie
        [, $domain // домен
        [, $secure = false // если задать true, куки можно будет передать только по защищённому соединению https
        [, $httponly = false ]]]]]] // Если задано true, cookie не будут доступны скриптовым языкам, вроде JavaScript.
        )
Чтобы удалить куки, нужно задать дату истечения в прошлом (time() - 1).
Установить куки и отправить заголовки можно только до первого вывода информации в браузер. Враки! Всё решается с помощью буферизации вывода.
ob_start(); // ставим в начало страницы

echo time();

setcookie("in", 'yes', time()+ 2*3600, "/"); // спокойно ставим куку

ob_flush(); // или ob_end_flush - отправит содержимое буфера вывода
После установки и перезагрузки страницы cookie будет доступно через глобальные массивы $_COOKIE и $HTTP_COOKIE_VARS и $_REQUEST.

javascript и cookies

посмотреть содержимое набора кукис можно с помощью document.cookie; Эта строка состоит из пар ключ=значение, которые перечисляются через точку с запятой с пробелом "; ".
// возвращает cookie с именем name, если есть, если нет, то undefined
function getCookie(name) {
  var matches = document.cookie.match(new RegExp(
    "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
  ));
  return matches ? decodeURIComponent(matches[1]) : undefined;
}
Функция setCookie(name, value, options) Если собрать все настройки воедино, вот такая функция ставит куки:
function setCookie(name, value, options) {
  options = options || {};

  var expires = options.expires;

  if (typeof expires == "number" && expires) {
    var d = new Date();
    d.setTime(d.getTime() + expires * 1000);
    expires = options.expires = d;
  }
  if (expires && expires.toUTCString) {
    options.expires = expires.toUTCString();
  }

  value = encodeURIComponent(value);

  var updatedCookie = name + "=" + value;

  for (var propName in options) {
    updatedCookie += "; " + propName;
    var propValue = options[propName];
    if (propValue !== true) {
      updatedCookie += "=" + propValue;
    }
  }

  document.cookie = updatedCookie;
}
name - название cookie
value - значение cookie (строка)
options - Объект с дополнительными свойствами для установки cookie:
expires - Время истечения cookie. Интерпретируется по-разному, в зависимости от типа:
Число — количество секунд до истечения. Например, expires: 3600 — кука на час.
Объект типа Date — дата истечения.
Если expires в прошлом, то cookie будет удалено.
Если expires отсутствует или 0, то cookie будет установлено как сессионное и исчезнет при закрытии браузера.
path - Путь для cookie
domain - Домен для cookie
secure - Если true, то пересылать cookie только по защищенному соединению
Пример:
setCookie("in", 'yes', {expires : 2*3600, path : "/"});
Функция deleteCookie(name)
Здесь всё просто — удаляем вызовом setCookie с датой в прошлом.
function deleteCookie(name) {
  setCookie(name, "", {
    expires: -1
  })
}

Объекты localStorage и sessionStorage

Броузеры, реализующие положения проекта спецификации «Web Storage», определяют в объекте Window два свойства: localStorage и sessionStorage. Оба свойства ссылаются на объект Storage – постоянно хранимый ассоциативный массив, отображающий строковые ключи в строковые значения. Объекты Storage действуют подобно обычным объектам в языке JavaScript: достаточно просто присвоить свойству объекта строку, и броузер автоматически сохранит ее. Разница между localStorage и sessionStorage заключается лишь в сроке хранения и области видимости: они определяют, как долго будут храниться данные и кому они будут доступны.
Объект localStorage представляет долговременное хранилище данных: срок хранения не ограничен, и данные сохраняются на компьютере пользователя, пока не будут удалены веб-приложением или пока пользователь не удалит их сам.
Данные, сохраняемые в sessionStorage, имеют другой срок хранения: они хранятся, пока остается открытой вкладка броузера.
Примеры использования объекта localStorage. Этот программный код с тем же успехом мог бы использовать объект sessionStorage:
localStorage.setItem("login", 'Vasya'); // Сохранить сроку под именем "login"
localStorage.getItem("login"); // Извлечь значение
// Перечислить все хранящиеся пары имя-значение
for(var i = 0; i < localStorage.length; i++) { // length дает количество пар
 var name = localStorage.key(i); // Получить имя i-й пары
 var value = localStorage.getItem(name); // Получить значение этой пары
}
localStorage.removeItem("login"); // Удалить элемент "login"
localStorage.clear(); // Удалить все остальные элементы
localStorage можно с успехом использовать, например, с целью сохранения корзины покупателя.
// Получаем данные из LocalStorage
function getCartData(name){
  return JSON.parse(localStorage.getItem(name));
}
// Записываем данные в LocalStorage
function setCartData(name, obj){
  localStorage.setItem(name, JSON.stringify(obj));
  return false;
}
2015.08.31 151

Если человека послали за бутылкой и он прин..ес одну и пустую, значит он работает программистом.
Войдите или Зарегистрируйтесь чтобы оставить комментарий

Комментарии


    Яндекс.Метрика Яндекс.Метрика