ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Есть вопрос по JavaScript+cookie!
  #1  
Старый 11.05.2007, 19:55
Аватар для DesignerMix
DesignerMix
Познающий
Регистрация: 10.01.2007
Сообщений: 35
Провел на форуме:
62785

Репутация: 34
По умолчанию Есть вопрос по JavaScript+cookie!

Вот мой скрипт:

PHP код:
function getCookieVal (offset)
{
var 
endstr document.cookie.indexOf (";"offset);
if (
endstr == -1endstr document.cookie.length;
return 
unescape(document.cookie.substring(offsetendstr));
}

function 
GetCookie (name)
{
var 
arg name "=";
var 
alen arg.length;
var 
clen document.cookie.length;
var 
0;
while (
clen)
    {
    var 
alen;
    if (
document.cookie.substring(ij) == arg) return getCookieVal (j);
    
document.cookie.indexOf(" "i) + 1;
    if (
== 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() + (24 45 45));
SetCookie('currentQuest1',currentQuest1,largeExpDate,myDomain);
function 
SetCookie (namevalue){ 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() + (24 45 45));
SetCookie('test1',test1,largeExpDate,myDomain);
function 
SetCookie (namevalue){ 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 и поэтому когда я собирал его по кусочкам наверняка запорол какой-нить из них. Кто может ПОМОГИТЕ!
 
Ответить с цитированием

  #2  
Старый 12.05.2007, 03:40
Аватар для je0n
je0n
Постоянный
Регистрация: 14.05.2006
Сообщений: 334
Провел на форуме:
1543521

Репутация: 272
Отправить сообщение для je0n с помощью ICQ
По умолчанию

с функциями у тебя все нормально, только там напутано того рот. Сначала ты вызываешь функцию, а потом объвляешь... так нельзя. сначала объвить потом вызывать. Так еще со скобками косяки и в логике тоже. Короче много где накосячил. Вот работающий код:
PHP код:
<script language="JavaScript">
function 
getCookieVal (offset

var 
endstr document.cookie.indexOf (";"offset); 
if (
endstr == -1endstr document.cookie.length
return 
unescape(document.cookie.substring(offsetendstr)); 


function 
GetCookie (name

var 
arg name "="
var 
alen arg.length
var 
clen document.cookie.length
var 
0
while (
clen
    { 
    var 
alen
    if (
document.cookie.substring(ij) == arg) return getCookieVal (j); 
    
document.cookie.indexOf(" "i) + 1
    if (
== 0) break; 
    } 
return 
null


function 
SetCookie (namevalue)

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() + (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
 
Ответить с цитированием

  #3  
Старый 12.05.2007, 13:13
Аватар для DesignerMix
DesignerMix
Познающий
Регистрация: 10.01.2007
Сообщений: 35
Провел на форуме:
62785

Репутация: 34
По умолчанию

Спасибо je0n!

Но возник ещё один вопросик: Есть кука answers , значения в которой записаны так: "значение"|"значение"... Я хотел бы знать как проверить наличие любого значения (оно меняеться всё время).
Например есть три значения 3|-10|9 , а мне нужно знать не то какое значение там записано, но то что их три. Можно ли это как-то осуществить?
 
Ответить с цитированием

  #4  
Старый 12.05.2007, 19:29
Аватар для je0n
je0n
Постоянный
Регистрация: 14.05.2006
Сообщений: 334
Провел на форуме:
1543521

Репутация: 272
Отправить сообщение для je0n с помощью ICQ
По умолчанию

Вот, держи функцию в две строчки . Возвращает количество значений
PHP код:
<script language="JavaScript">
function 
antichat(str)
{
    
s=str.split("|");   //Тут вместо | можешь поставить любой разделитель
    
return s.length;
}

x=antichat('3|-10|9');
document.write(x);
</
script
 
Ответить с цитированием

  #5  
Старый 13.05.2007, 15:17
Аватар для DesignerMix
DesignerMix
Познающий
Регистрация: 10.01.2007
Сообщений: 35
Провел на форуме:
62785

Репутация: 34
По умолчанию

PHP код:
function getCookieVal (offset)  
{  
var 
endstr document.cookie.indexOf (";"offset);  
if (
endstr == -1endstr document.cookie.length;  
return 
unescape(document.cookie.substring(offsetendstr));  
}  

function 
GetCookie (name)  
{  
var 
arg name "=";  
var 
alen arg.length;  
var 
clen document.cookie.length;  
var 
0;  
while (
clen)  
    {  
    var 
alen;  
    if (
document.cookie.substring(ij) == arg) return getCookieVal (j);  
    
document.cookie.indexOf(" "i) + 1;  
    if (
== 0) break;  
    }  
return 
null;  
}  

function 
SetCookie (namevalue
{  
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() + (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");"
или ошибка заключаеться именно в этом?
 
Ответить с цитированием

  #6  
Старый 13.05.2007, 16:38
Аватар для Zebra
Zebra
Новичок
Регистрация: 11.05.2007
Сообщений: 6
Провел на форуме:
621970

Репутация: 61
По умолчанию

записывается а потому что а закавычена. SetCookie('test1',"a");
а проверять мона хоть десять куков
 
Ответить с цитированием

  #7  
Старый 13.05.2007, 16:59
Аватар для DesignerMix
DesignerMix
Познающий
Регистрация: 10.01.2007
Сообщений: 35
Провел на форуме:
62785

Репутация: 34
По умолчанию

Кавычки я снял, но теперь в test1 записываеться null... Не пойму, вроде ведь всё правильно!?
 
Ответить с цитированием

  #8  
Старый 13.05.2007, 17:27
Аватар для je0n
je0n
Постоянный
Регистрация: 14.05.2006
Сообщений: 334
Провел на форуме:
1543521

Репутация: 272
Отправить сообщение для je0n с помощью ICQ
По умолчанию

Короче по порядку:
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'у, и я больше чем уверен, такие бы элементарные вещи в легкую сам бы делал.
 
Ответить с цитированием

  #9  
Старый 13.05.2007, 18:03
Аватар для Zebra
Zebra
Новичок
Регистрация: 11.05.2007
Сообщений: 6
Провел на форуме:
621970

Репутация: 61
По умолчанию

не знаю зачем такая невпупенная функция и зачем проверять по очерди и устанавливать кукисы вообще, но все решается намного проще
Код:
<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>
 
Ответить с цитированием

  #10  
Старый 14.05.2007, 12:28
Аватар для DesignerMix
DesignerMix
Познающий
Регистрация: 10.01.2007
Сообщений: 35
Провел на форуме:
62785

Репутация: 34
По умолчанию

Спасибо всем! Всё работает +). Берусь за мануалы по JavaScript'у!!!
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Взлом через cookie k00p3r Чужие Статьи 0 13.06.2005 13:56
Cookies Болталка 9 11.01.2004 03:43
Вопрос по чатам от http://www.maxchat.ru Чаты 3 21.12.2002 08:51
Есть вопрос на счёт чата Чаты 6 12.09.2002 17:52



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ