Вот мой скрипт: PHP: function getCookieVal (offset) { var endstr = document.cookie.indexOf (";", offset); if (endstr == -1) endstr = document.cookie.length; return unescape(document.cookie.substring(offset, endstr)); } function GetCookie (name) { var arg = name + "="; var alen = arg.length; var clen = document.cookie.length; var i = 0; while (i < clen) { var j = i + alen; if (document.cookie.substring(i, j) == arg) return getCookieVal (j); i = document.cookie.indexOf(" ", i) + 1; if (i == 0) break; } return null; } var currentQuest = GetCookie('currentQuest'); if (currentQuest == "1") {counter();} function counter() { var currentQuest1 = '1'; pathname = location.pathname; myDomain = pathname.substring(0,pathname.lastIndexOf('/')) +'/'; var largeExpDate = new Date (); largeExpDate.setTime(largeExpDate.getTime() + (7 * 24 * 45 * 45)); SetCookie('currentQuest1',currentQuest1,largeExpDate,myDomain); function SetCookie (name, value){ var argv = SetCookie.arguments; var argc = SetCookie.arguments.length; var expires = (argc > 2) ? argv[2] : null; var path = (argc > 3) ? argv[3] : null; var domain = (argc > 4) ? argv[4] : null; var secure = (argc > 5) ? argv[5] : false; document.cookie = name + "=" + escape (value) + ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + ((path == null) ? "" : ("; path=" + path)) + ((domain == null) ? "" : ("; domain=" + domain)) + ((secure == true) ? "; secure" : ""); } } var currentQuest1 = GetCookie('currentQuest1'); if (currentQuest1 == "1") {counter();} function counter() { var test1 = '1'; pathname = location.pathname; myDomain = pathname.substring(0,pathname.lastIndexOf('/')) +'/'; var largeExpDate = new Date (); largeExpDate.setTime(largeExpDate.getTime() + (7 * 24 * 45 * 45)); SetCookie('test1',test1,largeExpDate,myDomain); function SetCookie (name, value){ var argv = SetCookie.arguments; var argc = SetCookie.arguments.length; var expires = (argc > 2) ? argv[2] : null; var path = (argc > 3) ? argv[3] : null; var domain = (argc > 4) ? argv[4] : null; var secure = (argc > 5) ? argv[5] : false; document.cookie = name + "=" + escape (value) + ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + ((path == null) ? "" : ("; path=" + path)) + ((domain == null) ? "" : ("; domain=" + domain)) + ((secure == true) ? "; secure" : ""); } } var test1 = GetCookie('test1'); if (test1 == "1") document.location.href="www.antichat.ru"; Поясню что оне должен делать: Во первых должен проверить наличие кука currentQuest , если он есть и равен '1' то создать кук currentQuest1 равный '1' , затем проверяем наличие кука currentQuest1 равного '1' и при этом условии создаём кук test1 и задаём ему значение '1' , и наконец проверяем наличие кука test1 равного '1', если он есть то редиректим юзера на нуюную нам страницу. Всё бы хорошо, но в скрипте какая-то ошибка и он не работает, я просто не особо смыслю в JavaScript и поэтому когда я собирал его по кусочкам наверняка запорол какой-нить из них. Кто может ПОМОГИТЕ!
с функциями у тебя все нормально, только там напутано того рот. Сначала ты вызываешь функцию, а потом объвляешь... так нельзя. сначала объвить потом вызывать. Так еще со скобками косяки и в логике тоже. Короче много где накосячил. Вот работающий код: PHP: <script language="JavaScript"> function getCookieVal (offset) { var endstr = document.cookie.indexOf (";", offset); if (endstr == -1) endstr = document.cookie.length; return unescape(document.cookie.substring(offset, endstr)); } function GetCookie (name) { var arg = name + "="; var alen = arg.length; var clen = document.cookie.length; var i = 0; while (i < clen) { var j = i + alen; if (document.cookie.substring(i, j) == arg) return getCookieVal (j); i = document.cookie.indexOf(" ", i) + 1; if (i == 0) break; } return null; } function SetCookie (name, value) { var argv = SetCookie.arguments; var argc = SetCookie.arguments.length; var expires = (argc > 2) ? argv[2] : null; var path = (argc > 3) ? argv[3] : null; var domain = (argc > 4) ? argv[4] : null; var secure = (argc > 5) ? argv[5] : false; document.cookie = name + "=" + escape (value) + ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + ((path == null) ? "" : ("; path=" + path)) + ((domain == null) ? "" : ("; domain=" + domain)) + ((secure == true) ? "; secure" : ""); } function counter() { var currentQuest1 = '1'; var largeExpDate = new Date (); largeExpDate.setTime(largeExpDate.getTime() + (7 * 24 * 45 * 45)); SetCookie('currentQuest1',currentQuest1); } var currentQuest=GetCookie('currentQuest'); if(currentQuest=="1")SetCookie('currentQuest1',"1"); var test1 = GetCookie('test1'); if (test1 == "1") document.location="http://antichat.ru"; </script>
Спасибо je0n! Но возник ещё один вопросик: Есть кука answers , значения в которой записаны так: "значение"|"значение"... Я хотел бы знать как проверить наличие любого значения (оно меняеться всё время). Например есть три значения 3|-10|9 , а мне нужно знать не то какое значение там записано, но то что их три. Можно ли это как-то осуществить?
Вот, держи функцию в две строчки . Возвращает количество значений PHP: <script language="JavaScript"> function antichat(str) { s=str.split("|"); //Тут вместо | можешь поставить любой разделитель return s.length; } x=antichat('3|-10|9'); document.write(x); </script>
PHP: function getCookieVal (offset) { var endstr = document.cookie.indexOf (";", offset); if (endstr == -1) endstr = document.cookie.length; return unescape(document.cookie.substring(offset, endstr)); } function GetCookie (name) { var arg = name + "="; var alen = arg.length; var clen = document.cookie.length; var i = 0; while (i < clen) { var j = i + alen; if (document.cookie.substring(i, j) == arg) return getCookieVal (j); i = document.cookie.indexOf(" ", i) + 1; if (i == 0) break; } return null; } function SetCookie (name, value) { var argv = SetCookie.arguments; var argc = SetCookie.arguments.length; var expires = (argc > 2) ? argv[2] : null; var path = (argc > 3) ? argv[3] : null; var domain = (argc > 4) ? argv[4] : null; var secure = (argc > 5) ? argv[5] : false; document.cookie = name + "=" + escape (value) + ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + ((path == null) ? "" : ("; path=" + path)) + ((domain == null) ? "" : ("; domain=" + domain)) + ((secure == true) ? "; secure" : ""); } function counter() { var currentQuest1 = '1'; var largeExpDate = new Date (); largeExpDate.setTime(largeExpDate.getTime() + (7 * 24 * 45 * 45)); SetCookie('currentQuest1',currentQuest1); } var currentQuest=GetCookie('currentQuest'); if(currentQuest=="1")SetCookie('currentQuest1',"1"); function Testum(str) { s=str.split("|"); return s.length; } var a=GetCookie('answers'); var c=GetCookie('currentQuest1'); if(a=="1",c=="1")SetCookie('test1',"a"); var test1 = GetCookie('test1'); if (test1 == "1") document.location="../../../../../testum/content/chapter1/section/paragraph1/test2.html?access=true"; В итоге получился вот такой код. Но в кук test1 записываеться почему-то не цифра а сама переменная "a", а почему не знаю. И ещё вопрос можно-ли делать две проверки разом: "var a=GetCookie('answers'); var c=GetCookie('currentQuest1'); if(a=="1",c=="1")SetCookie('test1',"a");" или ошибка заключаеться именно в этом?
Короче по порядку: 1) проверок можно делать сколько хошь, но не через запятую, а логическими "и" и "или" (еще есть "не"). В твоем случае будет выглядеть вот так: PHP: if(a=="1" && c=="1")SetCookie('test1',a); 2) null у тебя в переменно a, потому что наверное не установлен кук answers Вот, что в итоге: PHP: var a=GetCookie('answers'); var c=GetCookie('currentQuest1'); if(a!="1" && c!="1")SetCookie('test1',a); var test1 = GetCookie('test1'); if (test1 == "1") document.location="../../../../../testum/content/chapter1/section/paragraph1/test2.html?access=true"; P.S. А вообще чем в слепую тупо пытаться собрать код, прочел страниц 50 любой книжки по JavaScript'у, и я больше чем уверен, такие бы элементарные вещи в легкую сам бы делал.
не знаю зачем такая невпупенная функция и зачем проверять по очерди и устанавливать кукисы вообще, но все решается намного проще Code: <script type="text/javascript"> function chCookie(name) {var nC=name+"=1" var clen=name.length+2 if ((document.cookie.indexOf(nC+";")!=-1)||(document.cookie.indexOf(nC+" ")!=-1)||((document.cookie.indexOf(nC)+clen)==document.cookie.length)) {return "exist"}} function sCookie(name, value) {document.cookie=name+"="+value+";expires="+сюды срок} if (chCookie("currentQuest")=="exist") {sCookie("currentQuest1", "1")} if (chCookie("currentQuest1")=="exist") {sCookie("test1", "1")} if (chCookie("test1")=="exist") {document.location="..."} </script>