2015-07-14 3 views
0

У меня есть блог, который требует от пользователей регистрации по электронной почте, чтобы просмотреть полный пост. Я хочу пропустить это требование, если пользователь уже зарегистрировался.Проверка возвращающихся посетителей с помощью файлов cookie

Вот как это работает.

  1. страница посещения пользователей, если куки Presen затем показывать содержимое
  2. Если куки нет, пользователь должен подписаться
  3. признаков пользователя вверх, печенье создано.

Проблема с моим кодом, что это сообщение специфичны. например Предположим, что у нас есть сообщение A & Сообщение B. Если пользователь выбирает сообщение «А», им нужно будет снова выбрать «Post B», который не является хорошим.

Если они выбирают Post A, я также хочу распознать cookie на Post B.

Как я могу настроить свой код?

 if (document.cookie.indexOf("entered_email")>=0) { 
      jQuery('.hidden-blog').slideDown(); 
    } 



$('.snp-subscribeform').on('submit', function() { 
     $('.hidden-blog').slideDown(); 
     document.cookie="entered_email=true;expire=06/12/2018"; 
    }); 

ответ

1

Вы должны установить путь на печенье к "/", который затем позволяет любую страницу на этом сайте, чтобы увидеть печенье. Когда вы не устанавливаете путь для значения cookie, по умолчанию используется путь к текущей странице, который ограничивает видимость этого файла cookie только этим путем.

Вот некоторые полезные функции для работы с кукисами, которые позволяют вам установить путь или по умолчанию будет путь к "/".

Используя эти, ваш код будет выглядеть следующим образом:

if (readCookie("entered_email") === "1") { 
    jQuery('.hidden-blog').slideDown(); 
} 

$('.snp-subscribeform').on('submit', function() { 
    $('.hidden-blog').slideDown(); 
    // cookie path in this function defaults to "/" so all pages on the 
    // site can access the cookie 
    createCookie("entered_email", "1", 365 * 3); 
}); 

И вот функции управления утилита печений:

// createCookie() 
// name and value are strings 
// days is the number of days until cookie expiration 
// path is optional and should start with a leading "/" 
// and can limit which pages on your site can 
// read the cookie. 
// By default, all pages on the site can read 
// the cookie if path is not specified 
function createCookie(name, value, days, path) { 
    var date, expires = ""; 
    path = path || "/"; 
    if (days) { 
     date = new Date(); 
     date.setTime(date.getTime()+(days*24*60*60*1000)); 
     expires = "; expires=" + date.toGMTString(); 
    } 
    document.cookie = name + "=" + value + expires + "; path=" + path; 
} 

function readCookie(name) { 
    var nameEQ = name + "="; 
    var ca = document.cookie.split(';'); 
    for (var i = 0; i < ca.length; i++) { 
     var c = ca[i]; 
     while (c.charAt(0)==' ') c = c.substring(1,c.length); 
     if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 
    } 
    return null; 
} 

function eraseCookie(name) { 
    createCookie(name, "", -1); 
} 
+0

Awesome, спасибо –

Смежные вопросы