Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сравнение куки и выдача результата. (https://javascript.ru/forum/misc/46391-sravnenie-kuki-i-vydacha-rezultata.html)

fakels 08.04.2014 13:42

Сравнение куки и выдача результата.
 
Как и многие, задающие тут вопросы - в js я 0.
Но передо мной стоит задача.

Есть голосование на js+mysql+php.

Все работает отлично, но я решил немного его "причесать", сделать получше.. И вот уже 3-ий день бьюсь над элементарной, как мне кажется, задачей, но решить сам её не могу. Перечитал тут кучу примеров, засунул в свой код и добился ерунды полной :)

В двух словах. Есть голосование. Когда пользователь тыкает на кнопку проголосовать - в куки браузера падает запись вида voting_ + id + абракодабра, примерный вид - "voting_472dfgjhKFGH".

Если пользователь пытается проголосовать еще раз, то ему вылетает alert с предупреждением, что он уже голосовал.

Что хочу сделать я - что бы если пользователь уже голосовал, то кнопки голосования были УЖЕ не активны.

Застрял я на этапе сравнения всех кук с данного сайта с нужной нам.

После 3х дней у меня получилось следующее:
var getvalue = $('.vote-wrapper').attr('name');
 	kuka = "voted_" + getvalue;
 	
 	var mas = document.cookie.split(';'), names = [], i = 0, l = mas.length;
	for(;i<l;i++)names.push(mas[i].split('=')[0]);
	//alert(names);
	
	var coockie=document.cookie;
	var coockie_arr=coockie.split('; ');	
	var value_arr=[];
	var coockie_key=0;
	var coockie_val=0;
	
	$.each(coockie_arr, function(key, value) {
      		value_arr=value.split('=');
      		coockie_key=value_arr[0];
		    if (coockie_key == kuka) {
      			alert("нашли куку!"); 
      		}
      		else {
      			alert("нет такой куки, черт побери!");
      		}
	});


var getvalue = $('.vote-wrapper').attr('name');

забирает из класса vote-wrapper атрибут - name. Там у нас ID + абракодарбра.
далее мы добавляем еще "voted_".

Ну а дальше полная ерунда) я толком не понимаю, что там происходит, но это максимум, что у меня получилось.

Результат - сейчас выскакивает каждый раз алерт, на каждую куку, где то в середине он находит нужную и выскакивает другой алерт.

Нужно, что бы алерт вылетал всего 1 раз и говорил нашли вообще такую куку или нет.
А там я уже алерт поменял бы на то, что мне нужно.

Если кто то подправит это дело или даст готовое решение или отправит меня читать не весь мануал, а конкретную вещь, желательно с примером - буду очень благодарен.

fakels 08.04.2014 13:47

Мда.. сразу не допер, просто взял и удалил Else. Теперь только нужны алерт вылетает.

Но все равно буду рад, если кто нибудь укажет на ошибки, лишний код и объяснит алгоритм или отправит на мануал) Ученье - свет :)

Erolast 08.04.2014 17:02

Ээээ, я не понял, идентификатор сессии хранится в ключе куки? :blink: А в значении тогда что?


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