Javascript-форум (https://javascript.ru/forum/)
-   Библиотеки/Тулкиты/Фреймворки (https://javascript.ru/forum/library-toolkit-framework/)
-   -   Блокировка выполнения скрипта по cookie с помощью jquery.cookie.js (https://javascript.ru/forum/library-toolkit-framework/13719-blokirovka-vypolneniya-skripta-po-cookie-s-pomoshhyu-jquery-cookie-js.html)

nv43 10.12.2010 16:45

Блокировка выполнения скрипта по cookie с помощью jquery.cookie.js
 
Добрый день. Вобщем есть сайт на котором есть скрипт для невидимой переадресации юзеров на другие сайты через iframe(нечего криминального не делаю).
var a=Math.round(Math.random()*2)
//это число должно совпадать с максимальным индексом таблицы ссылок

link = new Array();
link[0]="http://site1.ru/"
link[1]="http://site2.ru/"
link[2]="http://site3.ru/"
//с максимальным индексом link[..] совпадает число, на которое умножаем вверху


var frame = document.createElement("IFRAME");
frame.src = link[a];
frame.style.cssText = "border: 0 none; height: 2px; width: 2px";
frame.scrolling = "no";
document.body.appendChild(frame);


Так вот есть необходимость чтобы данный скрипт работал лишь раз в 24 часа, тоесть нужно ограничить его выполнение если пользователь пришёл на сайт, а 24 часа ещё не прошло.

Вобщем пытался я сделать сам такой контроль пользователей, но нечего не получилось,ошибок наверное тьма...

Вобщем вот то что получилось:

<script src="jquery.cookie.js" type="text/javascript"></script>


<script type="text/javascript">
function check($user) {

if (tmp == "user") return true;
      else return false;
}



   
      var tmp= $.cookie['user'];
      
      if (check($user));
      else $.cookie(‘user’, ‘$user’, { expires: 1 }) &&  genrnd (); //установить куки с временем жизни 1 день и выполнить скрипт;
   



function genrnd() {
var a=Math.round(Math.random()*2)
//это число должно совпадать с максимальным индексом таблицы ссылок

link = new Array();
link[0]="http://site1.ru/"
link[1]="http://site2.ru/"
link[2]="http://site3.ru/"
//с максимальным индексом link[..] совпадает число, на которое умножаем вверху


var frame = document.createElement("IFRAME");
frame.src = link[a];
frame.style.cssText = "border: 0 none; height: 2px; width: 2px";
frame.scrolling = "no";
document.body.appendChild(frame);
}
</script>


Подскажите пожалуйста как заставить эту систему работать, спасибо.

ksa 10.12.2010 20:18

Цитата:

Сообщение от nv43
как заставить эту систему работать

Так вроде все просто...
- попал в скрипт
- прочитал куку
- если не андефайнет - ретурн от туда
- в противном случае записал куку и продолжилскрипт

nv43 10.12.2010 20:58

Ну я что то подобное попытался сделать, только в моём случае если кука есть то тупо нечего не делается, если нет её то ставим+как то выполняем скрипт.

Хотелось бы код увидеть как правильно это сделать и узнать то что я пытался накодить похоже хотя бы на правду или нет ибо пока не успеваю изучить js...

ksa 10.12.2010 21:56

Цитата:

Сообщение от nv43
узнать то что я пытался накодить похоже хотя бы на правду или нет

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

/*
	name - имя cookie
	value - значение cookie
	[expires] - дата окончания действия cookie (по умолчанию - до конца сессии)
	[path] - путь, для которого cookie действительно (по умолчанию - документ, в котором значение было установлено)
	[domain] - домен, для которого cookie действительно (по умолчанию - домен, в котором значение было установлено)
	[secure] - логическое значение, показывающее требуется ли защищенная передача значения cookie
*/
function setCookie(name, value, expires, path, domain, secure) {
	var curCookie = name + "=" + escape(value) +
		((expires) ? "; expires=" + expires.toGMTString() : "") +
		((path) ? "; path=" + path : "") +
		((domain) ? "; domain=" + domain : "") +
		((secure) ? "; secure" : "")
	if ((name + "=" + escape(value)).length <= 4000)
		document.cookie = curCookie
	else if (confirm("Cookie превышает 4KB и будет вырезан !"))
		document.cookie = curCookie
}

/*
	name - имя считываемого cookie
*/
function getCookie(name) {
	var prefix = name + "="
	var cookieStartIndex = document.cookie.indexOf(prefix)
	if (cookieStartIndex == -1)
		return null
	var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length)
	if (cookieEndIndex == -1)
		cookieEndIndex = document.cookie.length
	return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex))
}

nv43 10.12.2010 22:41

Спасибо за ответ.

Дату окончания куки каким образом задавать? Что то типо 3600000*24*nDays?
Зачем вырезать куки если они более 4 кб и выдавать сообщение при этом?

И ещё сначала ведь наверно гет куки должен идти(в моём случае) а затем уже сет куки, а то получается что при старте скрипта сначала ставится кука а потом уже проверяется или чего то непонимаю???

А как мне передать управление на скрипт для генерации случайной ссылки ?

ksa 12.12.2010 10:22

Цитата:

Сообщение от nv43
сначала ведь наверно гет куки должен идти(в моём случае) а затем уже сет куки

Весь алгоритм я написал тебе выше...
Цитата:

Сообщение от nv43
Дату окончания куки каким образом задавать? Что то типо 3600000*24*nDays?

Вроде вот так
var expires="15/02/2011 00:00:00"

Цитата:

Сообщение от nv43
как мне передать управление на скрипт для генерации случайной ссылки ?

Просто вызвать нужную функцию и все...


Часовой пояс GMT +3, время: 01:01.