Является ли использование плагина jQuery Cookie допустимым способом проверки наличия файлов cookie? - PullRequest
7 голосов
/ 08 января 2010

У меня есть сайт, который требует, чтобы пользователь включил JavaScript и куки, прежде чем они смогут войти на сайт. (Часть JS выполнена и работает отлично.) В данный момент мы устанавливаем cookie, а затем перенаправляем пользователя на другую страницу (в PHP). Это работало нормально, но теперь у нас есть группа людей, которые добавили в закладки страницу, на которую мы перенаправляем, которая, конечно, не имеет установленных файлов cookie и поэтому не позволяет им войти в систему.

Итак, я пытаюсь найти другое решение для проверки файлов cookie и думаю об использовании плагина jQuery Cookie . Мне интересно, совместимо ли это во всех браузерах (когда JS, конечно, включен)?

Ответы [ 3 ]

10 голосов
/ 09 января 2010

Thxs Shawn за ваш ответ , но, к сожалению, поскольку браузеры не всегда отправляют реферера, он недостаточно надежен, чтобы использовать его каждый раз. Потому что, если он не установлен, то вы как бы зацикливаетесь.

Еще одним решением, о котором я подумал, было перенаправление на совершенно отдельную страницу, которая сама по себе проверяет наличие файлов cookie (путем перенаправления на себя). Если куки включены, они будут перенаправлены обратно на исходную страницу. Если это не так, то он перенаправит на страницу о проблеме. Я думаю, что это должно работать, но я не уверен.

В конце концов, я попробовал плагин jQuery Cooke в IE 6, 7 и 8, Safari 4, Google Chrome 4, Firefox 3.5, Opera 10.2 и на нескольких различных конфигурациях, и он работал во всех них. Вот код, который я использую:

$.cookie('test_cookie', 'cookie_value', { path: '/' });
if ($.cookie('test_cookie') == 'cookie_value') {
    // cookie worked, set/enable appropriate things
}

Это не идеально, но я думаю, что это будет работать в 95% случаев. В противном случае он потерпит неудачу и просто не позволит им что-либо сделать.

1 голос
/ 29 июля 2014

Мне нравится эта 1 функция лайнера:

function cookiesEnabled() {
    return $.cookie('check', 'valid', { expires: 1 }) && $.cookie('check') == 'valid';
}
1 голос
/ 08 января 2010

Вы можете проверить реферер страницы и, если это не ваша домашняя страница, вы можете перенаправить их туда. Если реферал - ваша домашняя страница и файлы cookie не установлены, вы будете знать, что у них не включены файлы cookie.

...