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 доступна сразу, а кука установленная сервером только после того как пользователь сделает переход или закроет страницу, так как только в это время браузер пишет куку в файл, до этого она хранится в памяти.

warren buffet 08.08.2016 23:06

Цитата:

Сообщение от laimas
уки есть только у браузера, он их пишет на диск, отсюда и требование строкового представления.

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

Второе, куки текст не потому что пишутся в файлы, а потому что передаются как текст, это всего лишь заголовок с 4К данными. Ты можешь не писать в документ куки и на сервере не писать через функцию, а самостоятельно формировать заголовки и получишь те же коки вид сбоку.

Поменьше бреда пиши, чтобы мне поменьше исправлять. Про разницу. Разница нет никакой, ибо куки есть только на клиенте. На сервер они могут попасть только с клиента. Все что сервер сам пишет типа в куки какие-то блин как ты воображаешь - он просто отгружает заголовки в браузер в рамках запроса, а браузер их уже записывает.

Одностороннее направление движения кук и приводят к тому, что нельзя получить сведения о действия клиента до момента пока он эти действия не пожелает запротоколировать. То есть на сервере куки всегда старые.

Больше не пиши о своих фантазиях, читай документацию.

warren buffet 08.08.2016 23:20

Например

Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1

Поэтому и кукисы пишутся как вообще все заголовки форматируются через key=value;

Кстати, например известный ответ 404 Not Found - ты можешь написать вместо Not Found что угодно и даже по-русски. Когда ты видишь в браузере 404 Not Found - это цитата статуса заголовка. Если на сервере поменять статус на, например "Хер знает где ваша страница", то браузер так и напишет "404 Хер знает где ваша страница.

Поэтому кукисы и нахер не нужны, можно через кучу заголовков передавать данные. Самый популярный - Etag.

laimas 09.08.2016 14:00

warren buffet, ты идиот - как говорил герой Папанова, больше сказать нечего.

warren buffet 10.08.2016 08:22

laimas, в глубоком баттхерте. На старости лет узнал, что куки пишутся только браузером, а не из памяти сервера. )))


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