получить оригинальное значение куки в JS

grigori

( ͡° ͜ʖ ͡°)
Команда форума
получить оригинальное значение куки в JS

Как получить оригинальное значение куки в JS?
Код:
<?php
setcookie('abc','a + b = &c');
?>
<script>
document.write (unescape(document.cookie))
</script>
выводит abc=a+++b+=+&c

document.write (document.cookie) - abc=a+%2B+b+%3D+%26c

как получить 'a + b = &c'?
может, заменить плюсы на пробелы, а протом анэскэйпить?
или как-то кодировать перед setcookie?

-~{}~ 03.09.09 01:17:

сейчас делаю
<script>
var c = unescape(document.cookie.replace(/\+/g," "));
</script>
вроде, работает, но есть ощущение неправильности
 

pilot911

Новичок
PHP:
	function getCookie( name ) {
		var start = document.cookie.indexOf( name + '=' );
		var len = start + name.length + 1;
		if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
			return null;
		}
		if ( start == -1 ) return null;
		var end = document.cookie.indexOf( ';', len );
		if ( end == -1 ) end = document.cookie.length;
		return unescape( document.cookie.substring( len, end ) );
	}
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
pilot911
перечитай мой пост, plz
проблема не значение из строки достать, а в то, что PHP и JS по-разному кодируют пробел
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
В спецификации на куки написано буквально следующее:
NAME=VALUE

This string is a sequence of characters excluding semi-colon, comma and white space. If there is a need to place such data in the name or value, some encoding method such as URL style %XX encoding is recommended, though no encoding is defined or required.
Соответственно и похапэ, и жабий скрипт поступают в полном соответствии со спецификацией. Можно использовать какой-нибудь свой способ кодирования, типа base64, чтобы не напарываться на разницу.
 
Сверху