setcookie с ajax
код простой
отправляем аяксом "name"
в php пишем
если на прямую к скрипту обратиться через строку - работает
если отправить name ответом аяксу и вывести на экран через alert - работает
но сам setcookie почему то куку не хранит.
В чем загвоздка?
а как вы проверяете, что кука не хранится? если сразу после установки обращаться к $_COOKIE, то там ничего и не будет, в него попадут установленные элементы после перезагрузки страницы..
и скобочки у вас не хватает после ($_GET['name'][COLOR="red"])[/COLOR]
скобка это просто на ходу писал, это не точное повторение кода :)
проверял просто выводом print_r($_COOKIE); и перегружал и всяко разно. обычным перегрузом ставит, а аяксом не хотит. Ну и ладно...
SibBear, попробуй, должно заработать.
Что-то типа http://operafan.net/forum/index.php?topic=6623.0, первый ответ.
у меня по тому же принципу сейчас сделано, после удачного ответа уже в js отправляю куку.
помогло добавление "/" четвертым параметром в setcookie.
хотя принципа я не понял, но работает...
помогло добавление "/" четвертым параметром в setcookie.
хотя принципа я не понял, но работает...
Потому что из песочницы работает.
А правда, можете объяснить, что изменилось принципиально? все таки понимать охото, а не просто лупить все подряд. Практика показывает, что через год я опять в этот код полезу, и опять буду думать что да как...
В описаниях php не нашел толкового объяснения
В описаниях php не нашел толкового объяснения
Когда на серверной стороне в php вызывается setcookie, то он просто в HTTP ответ добавляет заголовки которые рекомендуют (именно рекомендуют ибо куки на клиенте можно отлючить) браузеру установить определенные значения в куках. Если этот заголовок получен обычным путем, т.е. без JavaScript, то происходит установка значения. Но если все происходит из JavaScript через XmlHttpRequest, то возникают нюансы обусловленные тем, что JavaScript работает в песочнице и на запросы через него накладываются более жесткие условия чем на простые запросы. Просто потому что JavaScript это все же язык программирования с потенциальными опасностями, поэтому требуются ограничения. И вот на одно такое ограничение - некорректно заданный path, ты и натолкнулся.