Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Добавление кук через функцию (https://javascript.ru/forum/misc/64358-dobavlenie-kuk-cherez-funkciyu.html)

DivMan 05.08.2016 11:51

Добавление кук через функцию
 
Почему не создаются куки?

function addCookie(name, value){
				 console.log(document.cookie = 'name = value')
			}

			addCookie('city', 'moscow')

Manyasha 05.08.2016 12:04

DivMan, 'name = value' - строка. Может так?
function addCookie(name, value){
	console.log(document.cookie = [name, value])
}
addCookie('city', 'moscow');

warren buffet 05.08.2016 21:45

Это не пехепе, на клиенте куки - is a string containing a semicolon-separated list of all cookies (i.e. key=value pairs) - строка.

https://developer.mozilla.org/en-US/...ocument/cookie

warren buffet 05.08.2016 21:48

То есть не

document.cookie = 'name = value'

а

document.cookie = name+'='+value

поскольку name и value перменные.

laimas 06.08.2016 02:20

Цитата:

Сообщение от warren buffet
Это не пехепе, на клиенте куки - is a string


Это у тебя в пехепе куки произвольные, а у нормальных людей кука всегда и везде есть строка.

warren buffet 06.08.2016 05:33

Это у тебя мозг произвольный, а на пехепе все куки парсятся на фронтире и доступны как обычный ассоциативный массив, а на клиенте все в куче и приходится парсить самому

load:function(sKey){
		return decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*"
			+ encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") 
			+ "\\s*\\=\\s*([^;]*).*$)|^.*$"),"$1"))||null;
	},

laimas 06.08.2016 11:15

Цитата:

Сообщение от warren buffet
а на пехепе все куки парсятся на фронтире

Несешь всякую хрень, контекст темы об установке кук. А требование для всех едины - строка, и для сервера тоже. Слишком крутой? Ну так загляни в исходник РНР и не пори херни. Хотя в твоем ПеХеПе все может и не так.

Deff 06.08.2016 21:58

Вариант:
function setCookie(a,b,c)  {if(c){var d = new Date();d.setTime(d.getTime()+c);}if(a && b) document.cookie = encodeURIComponent(a)+'='+ encodeURIComponent(b)+';path=/' +(c ? '; expires='+d.toUTCString() : '');else return false;}
function getCookie(a) {var b = new RegExp(encodeURIComponent(a)+'=([^;]){1,}');var c = b.exec(document.cookie);if(c) c = c[0].split('=');else return false;return c[1] ? decodeURIComponent(c[1]) : false;}
function deleteCookie(a) {setCookie(a,"0",-100)}

var a = "Спичь о куках";
var b ="Ну так загляни в исходник РНР и не пори херни. Хотя в твоем ПеХеПе все может и не так.";

setCookie(a,b,10000) ; //Имя, Данные, время установки в миллисекундах(если ток на сессию, третий параметр опускаем
alert(getCookie(a))

warren buffet 08.08.2016 12:06

laimas,

Ну то есть тут все должно работать

Цитата:

document.cookie = 'name = value'
ибо куки везде строка.

laimas 08.08.2016 12:40

Цитата:

Сообщение от warren buffet
ибо куки везде строка.

Кук нет ни в одном языке программирования, есть только методы/функции работы с ними. Куки есть только у браузера, он их пишет на диск, отсюда и требование строкового представления.
То что РНР разработчики облегчили жизнь "породив" удобную функцию и разработчик обязан превращать в строку только значение куки, не означает, что РНР отсылает серверу что вздумается. В недрах он вынужден делать тоже самое, что и написал Deff.

Разница существенная работы кук на клиенте и сервер только одна - кука установленная JS доступна сразу, а кука установленная сервером только после того как пользователь сделает переход или закроет страницу, так как только в это время браузер пишет куку в файл, до этого она хранится в памяти.


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