Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Куки
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Куки

Страниц (1): [1]
 

1. JoyStick - 13 Января, 2012 - 10:45:43 - перейти к сообщению
Собственно такая проблема, есть скирипт на попап, все работает, все клево, но есть проблемка, он записывает в куки значение 1, и потом проверяет если оно равно 1, то окно не появляется. Так вот суть проблемы в том, что когда браузер закрываешь, то оно не сохр куки, так как не стоит срок их действия. Собственно вопрос, как выставить время хранения куки.

Вот скрипт

CODE (javascript):
скопировать код в буфер обмена
  1. <script type="text/javascript">
  2. var block_id = '#adSite';
  3. var top_offset = 100;
  4. var tid = null;
  5. function setCookie(name, value, expires, path, domain, secure) {
  6.         document.cookie = name + "=" + escape(value) +
  7.         ((expires) ? "; expires=" + expires : "") +
  8.         ((path) ? "; path=" + path : "") +
  9.         ((domain) ? "; domain=" + domain : "navigatorway.com") +
  10.         ((secure) ? "; secure" : "");
  11. }
  12. function getCookie(name) {
  13.         var cookie = " " + document.cookie;
  14.         var search = " " + name + "=";
  15.         var setStr = null;
  16.         var offset = 0;
  17.         var end = 0;
  18.         if (cookie.length > 0) {
  19.                 offset = cookie.indexOf(search);
  20.                 if (offset != -1) {
  21.                         offset += search.length;
  22.                         end = cookie.indexOf(";", offset)
  23.                         if (end == -1) {
  24.                                 end = cookie.length;
  25.                         }
  26.                         setStr = unescape(cookie.substring(offset, end));
  27.                 }
  28.         }
  29.         return(setStr);
  30. }
  31. function blockPop() {
  32.         $(block_id).slideUp("normal");
  33.         $(window).unbind("scroll");
  34.         setCookie('pop', '1');
  35. }
  36. document.onkeypress = func;
  37. function func(event) {
  38.         if (window.event) event = window.event;
  39.         var key = event.keyCode ? event.keyCode : event.which ? event.which : null;
  40.         if( (event.ctrlKey) && ( (key == 0xA) || (key == 0xD) ) ) {
  41.                 setCookie('pop', '');
  42.                 showPop();
  43.         }
  44. }
  45. function showPop() {
  46.         var pop = getCookie('pop');
  47.         if (pop) return;
  48.         setTimeout(function() {
  49.                 var win_scrl = $(document).scrollTop();
  50.                 var top = parseInt(top_offset + win_scrl);
  51.                 $(block_id).css('top', top + 'px').slideDown("normal", function() {
  52.                         $(block_id + ' #close_bnt').unbind("click").click(function() {
  53.                                 blockPop();
  54.                         });
  55.                         $(window).scroll(function() {
  56.                                 win_scrl = $(document).scrollTop();
  57.                                 top = parseInt(top_offset + win_scrl);
  58.                                 $(block_id).css('top', top + 'px');
  59.                         });
  60.                 });
  61.         }, 15000);
  62. }
  63. $(document).ready(function() {
  64.         showPop();
  65. });
  66. </script>
2. armancho7777777 - 13 Января, 2012 - 11:21:46 - перейти к сообщению
У Вас подключена jQuery?
Если да, могу предложить маленький плагин jquery.cookie.js

Работа с ним :

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $.cookie("the_cookie", "the_value", {
  3.   expires: 7, // Время жизни в днях
  4.   path: "/",  // Видимость для дирректорий
  5.   domain: "jquery.com", // Видимость для домена
  6.   secure: true // Безопасность
  7. });
  8.  


Удаление:

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $.cookie("the_cookie", null);
  3.  
3. JoyStick - 13 Января, 2012 - 11:31:35 - перейти к сообщению
armancho7777777 пишет:
У Вас подключена jQuery?
Если да, могу предложить маленький плагин jquery.cookie.js

Работа с ним :

Да подкл, но что то все равно не работает...
4. Zuldek - 13 Января, 2012 - 11:43:57 - перейти к сообщению
уберите параметр expires
либо укажите в нем время хранения куки
http://php.su/functions/?setcookie
5. JoyStick - 13 Января, 2012 - 12:35:38 - перейти к сообщению
Zuldek пишет:
уберите параметр expires
либо укажите в нем время хранения куки
http://php.su/functions/?setcookie


спс, разобрался)
6. armancho7777777 - 13 Января, 2012 - 14:08:10 - перейти к сообщению
JoyStick пишет:
Да подкл, но что то все равно не работает...

Так вы сначало подключите плагин jquery.cookie.js))
И, кстати, он короче вашего кода в 2 раза)

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. jQuery.cookie = function(name, value, options) {
  3.     if (typeof value != 'undefined') {
  4.         options = options || {};
  5.         if (value === null) {
  6.             value = '';
  7.             options.expires = -1;
  8.         }
  9.         var expires = '';
  10.         if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
  11.             var date;
  12.             if (typeof options.expires == 'number') {
  13.                 date = new Date();
  14.                 date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
  15.             } else {
  16.                 date = options.expires;
  17.             }
  18.             expires = '; expires=' + date.toUTCString();
  19.         }
  20.         var path = options.path ? '; path=' + (options.path) : '';
  21.         var domain = options.domain ? '; domain=' + (options.domain) : '';
  22.         var secure = options.secure ? '; secure' : '';
  23.         document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
  24.     } else {
  25.         var cookieValue = null;
  26.         if (document.cookie && document.cookie != '') {
  27.             var cookies = document.cookie.split(';');
  28.             for (var i = 0; i < cookies.length; i++) {
  29.                 var cookie = jQuery.trim(cookies[i]);
  30.                 if (cookie.substring(0, name.length + 1) == (name + '=')) {
  31.                     cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
  32.                     break;
  33.                 }
  34.             }
  35.         }
  36.         return cookieValue;
  37.     }
  38. };
  39.  
7. JoyStick - 13 Января, 2012 - 15:20:05 - перейти к сообщению
CODE (javascript):
скопировать код в буфер обмена
  1. function blockPop() {
  2.         $(block_id).slideUp("normal");
  3.         $(window).unbind("scroll");
  4.         setCookie('pop', '1', [color=red]'1-Jan-13 01:12:40 GMT'[/color]);


Вот добавил, то что выделено цветом, все гуд, НО в ИЕ не работает... Вылетает окно постоянно...
8. armancho7777777 - 13 Января, 2012 - 21:35:13 - перейти к сообщению
Блин, вам дали код короче Вашего в 2 раза, и рабочий.
Вам что, свободное время некуда девать?)

 

Powered by ExBB FM 1.0 RC1