Установите cookie с JS, прочитайте с проблемой PHP

Я пытаюсь установить cookie с javascript и прочитать его на другой странице с php. Я могу написать файл cookie, выполнив

document.cookie = cookieName+"="+cookieValue; 

и я частично работаю. – $_COOKIE[cookieName] cookie написан, и я могу прочитать его с помощью $_COOKIE[cookieName] но ТОЛЬКО на той же веб-странице.

Это не совсем полезно. Мне нужно прочитать его на другой странице. Я обычно развиваюсь в asp.net и c #, поэтому я готов к новому php. Я делаю что-то неправильно?

Спасибо за ваше время!

EDIT1: обе страницы находятся в одном домене .. например. site.com/index.php -> site.com/index2.php

EDIT2: cookie устанавливается на одной странице:

 function SetCookie(cookieName,cookieValue,nDays) { var today = new Date(); var expire = new Date(); if (nDays==null || nDays==0) nDays=1; expire.setTime(today.getTime() + 3600000*24*nDays); document.cookie = cookieName+"="+escape(cookieValue) + ";expires="+expire.toGMTString(); } 

и на другой странице доступ к нему недоступен, но на той же странице он может …

EDIT3: я попытался настроить домен и добавил path=<?php echo $_SERVER['HTTP_HOST']; ?> path=<?php echo $_SERVER['HTTP_HOST']; ?> в код javascript … все равно ничего ..

EDIT4: до сих пор я ..

 document.cookie = cookieName+"="+escape(cookieValue)+"; expires="+expire.toGMTString()+"; path=/"+"; domain=.<?php echo $_SERVER['HTTP_HOST']; ?>"; 

и все же я могу читать cookie ТОЛЬКО с той же страницы ..

EDIT5: ой .. мой .. бог … это была опечатка все время … просто нужно было удалить «путь = / » + » ; дом …« Мне так стыдно за себя прямо сейчас … . Тем временем я также сбросил свои файлы cookie, поэтому теперь Джаред, к сожалению, не могу принять ваше сообщение как anwser … я приносил позор моему имени !!! ….

Читайте о настройке файлов cookie Javascript и, в частности, пути и доступ к домену здесь:

http://www.quirksmode.org/js/cookies.html

Я думаю, что происходит одно из двух:

  1. Вы не получаете доступ к файлу cookie из того же домена / поддомена и / или
  2. другая страница не является частью пути, указанным cookie.

Таким образом, ваш файл cookie не предоставляет соответствующую информацию браузеру, чтобы он был доступен через субдомены и / или путь к каталогу.

 document.cookie = 'ppkcookie1=testcookie; expires=Thu, 2 Aug 2001 20:47:11 UTC; path=/; ;domain=.example.com' 

Обратите внимание: .example.com – всего лишь примерный домен (вам там нужен ваш), и вам не нужен шаблон, отличный от исходного . поскольку он проходит через все поддомены. И вам нужно создать expires= date. Из QuirksMode:

 function createCookie(name,value,days) { if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else { var expires = ""; } document.cookie = name+"="+value+expires+"; path=/; domain=.example.com"; } ) function createCookie(name,value,days) { if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else { var expires = ""; } document.cookie = name+"="+value+expires+"; path=/; domain=.example.com"; } 

Я добавил бит domain= bit в функцию QuirksMode.

РЕДАКТИРОВАТЬ (Пример ниже, на которые ссылаются страницы на моем личном сайте.)

Андрей, это отлично работает для меня:

http://example.com/test.php

 function createCookie(name,value,days) { if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else var expires = ""; document.cookie = name+"="+value+expires+"; path=/; domain=.example.com"; } createCookie('cookieee','stuff','22'); ) function createCookie(name,value,days) { if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else var expires = ""; document.cookie = name+"="+value+expires+"; path=/; domain=.example.com"; } createCookie('cookieee','stuff','22'); 

http://example.com/test/test.php

 <pre> <?php print_r($_COOKIE); ?> 

И распечатка $_COOKIE покажет cookie. Заметьте, что когда я проверяю файл cookie, файл .example.com правильно устанавливается в качестве домена.

Доступ к файлам cookie возможен только с помощью кода, который выполняется в том же домене.

Если ваш PHP и .NET-код работает на разных доменах, браузер не будет отправлять файлы cookie для домена A с запросом на домен B (или наоборот) – это принудительное применение политики одинакового происхождения помогает поддерживать работу в Интернете быстро ( поскольку браузер не должен передавать все файлы cookie пользователя для каждого запроса, и сервер не должен разбирать через мегабайты бесполезных данных, чтобы получить интересующие их два поля) и безопасный (поскольку я могу захватить вашу учетную запись если у меня есть cookie от вас с защищенным ключом сеанса.)

@Jared опубликовал хорошую ссылку из QuirksMode, которая дает отличный обзор пути и домена, чтобы у вас был именно тот доступ, который вы хотите получить на своем сайте.

Можете ли вы дать дополнительную информацию? Являются ли они оба в одном домене только разными файлами? Является ли линия

 document.cookie = cookieName+"="+cookieValue; 

единственная строка, которую вы используете для создания файла cookie?

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

 document.cookie = cookieName + '=' + cookieValue + '; path=/;';