[an error occurred while processing this directive] Cookie-приветствие посетителя по его имени
On-Line Библиотека www.XServer.ru - учебники, книги, статьи, документация, нормативная литература.
       Главная         В избранное         Контакты        Карта сайта   
    Навигация XServer.ru






 

Cookie-приветствие посетителя по его имени

////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
этот текст надо воткнуть в файл cookies.txt

-----------start file cookies.txt-----------
//Cookie Welcome Page version 1.1
//
// www.subwaydesign.by.ru
// =====================================
// Andreev Oleg :: OLEGAtor : olega-tor@mail.ru
// Copyright for subway::design(R) and Andreev Oleg
//



function SetCookies(VV)
{
var link;
document.cookie = "Secret="+VV+"endOfSecret;expires=Sun, 31-Dec-06 00:00:01 GMT;";

if(VV!=""){link="main.html";}else{link="index.html";}

window.location.href=link;
}

var strr;

function DoCookies()
{

var str1="Secret=";
var str2="";

if (document.cookie.indexOf(str1) !=-1)
{
start=document.cookie.indexOf(str1);
end =document.cookie.indexOf("endOfSecret");

strr=document.cookie.substring(start+str1.length, end);

if(strr==""){str2 = 'Welcome to my sight!<br><br>your name: <input maxlength=15 size=20 name=input>';
} else {str2 ='Welcome again, dear '+strr+', to my sight!<input type=hidden name=input value='+strr+'>';}

} else { str2='Welcome to my sight!<br><br>your name: <input maxlength=15 size=20 name=input>'; }

return str2;

}
-----------end of the file cookies.txt-------------

..
..
<form name="Form1" onload="this.innerHTML=DoCookies();">


</form>
<a href="" onclick="SetCookies(window.form1.input.value);">enter sight(войти)</a>

<a href="" onclick="SetCookies('')"> forget me(забыть меня)</a>


теперь разберемся, ЧТО мы написали::

1)файл cookies.txt содержит описание 2 функций, работающих с куками::

первая(SetCookies)получает в качестве параметра (параметр VV) текст, в котором должно находится имя посетителя
чтобы занести его в куку на его же компьютере. рассмотрим по-подробнее::

var link; - это объявление переменной, которая содержит путь к следующей странице

следующая строка сохраняет куку с ключевым словом Secret(что бы по нему найти конкретно эту куку) и пишет туда имя посетителя, переданное в параметр VV, заканчивая текст словом endOfSecret, что отделить имя от дату смерти куки, которая пишется в самый конец (здесь - конец 2006 года)

далее идет проверка параметра на пустоту :: если он равен пустой строке, то link равен этой же странице(здесь - index.html), если нет, то link равен другой странице (здесь - main.html)

после проверки мы перемещаемся на страницу с адресом link (window.location.href=link;)

Теперь рассмотрим функцию DoCookies()::
она не принимает никаких параметров, но делает оч. полезную работу 8). Рассмотрим все строки по отдельности::

1)str1 - это просто константа, которая содержит в себе ключевое слово Secret для того, что бы найти по нему НАШУ куку(можно не использовать эту константу, а просто писать "Secret=" вместо нее)
2)str2 - объявляем переменную для вывода из функции(возвратное значение)
3)Далее идет проверка куки с этого документа, если в ней содержится str1 ("Secret="), то все в порядке - это наша кука!
если же нет(такой куки вообще нет! Посетитель первый раз зашел на наш сайт), то мы возвращаем (передаем значение str2, а потом его возвращаем) поле ввода имени и приветствие


str2='Welcome to my sight!<br><br>your name: <input class=inputbox maxlength=15 size=20 name=input>';



4) Если кука все-таки есть, мы пишем ее содержимое в переменную (ранее объявленную) strr::


start=document.cookie.indexOf(str1);
end =document.cookie.indexOf("endOfSecret");
strr=document.cookie.substring(start+str1.length, end);


5) Но может так оказаться, что там пустое значение. Если это так, то мы просто возвращаем поле ввода имени(как и ранее)
6) Если там что-то написано, то мы возвращаем ему приветствие с его же именем НО!!! также мы передаем скрытое поле со значением его имени(<input type=hidden name=input value=Имя>)
сделано это для того, что бы при нажатии ссылки "войти", не возникало никаких проблем
(при нажатии на ссылку ВСЕГДА вызывается ф-ция DoCookies с параметром "значение поля с именем input из формы Form1", а если при возврате "правильного" приветствия мы не вернем такое поле с таким именем, то броузер заорет, что такого объекта нету и функция не доарботает до конца и не отшлет нас на main.html!!!!)
7)return str2; - это возврат этого самого текста

Далее я описал код HTML с которым будут взаимодействовать ф-ции из файла cookies.txt, но что бы они взаимодействовали надо их прикрепить к странице::


<script type="text/javascript" language="JavaScript" src="cookie.txt"></script>


а засунуть его надо между тегами <head>...</head>

Так, значит файл прикрепили, функции разобрали; осталось только ссылки воткнуть и форму Form1


<body onload="window.document.all["Form1"].innerHTML=DoCookies();">
...
<form name="form1" >
</form>
<a href="" onclick="SetCookies(window.Form1.input.value);">enter sight(войти)</a>
<a href="" onclick="SetCookies('')"> forget me(забыть меня)</a>


форма сначала пустая, но после загрузки загрузки <BODY> в нее вываливается (innerHTML) то, что наша ф-ция нашла в кеше(в нашей куке)
/////////затем идут 2 ссылки::

1)первая запихивает в SetCookies текущее значение поля input в форме и отправляет нас на main.html (или index.html)
2)вторая запихивает в SetCookies пустую строку (а-ля "забудь меня") и ф-ция, соответственно отправляет нас на index.html(а-ля обновление)

Вот, собственно оно и все, как работает можно посмотреть на
fotogallery.by.ru


Литература по Javascript