Javascript добавляет значение cookie в качестве объекта, в отличие от PHP, который добавляет его - PullRequest
0 голосов
/ 06 июля 2018

Это мой код:

<?php
    $cookie = [
            'url' => (isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null),
            'landing_page' => "//{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}",
            'date' => date('Y-m-d H:i:s')
        ];

        setcookie("mycookie_".rand(1,1000), json_encode($cookie), time() + (86400 * 30), "/");

?>
<script>    
var random = Math.floor((Math.random() * 1000) + 1);

setcookie("first_interaction"+random,<?=json_encode($cookie)?>,365)
</script>

Проблема в том, как значение «json_encode ($ cookie)» добавляется в качестве значения cookie, см. Ниже:

Значение при добавлении куки в Javascript:

 [object Object]

Значение при добавлении куки в PHP:

%7B%22url%22%3Anull%2C%22landing_page%22%3A%22%5C%2F%5C%2Fwww.site.com%5C%2FcookieTest.php%3Ftest%3Dtest%22%2C%22date%22%3A%222018-07-05+17%3A33%3A34%22%7D

Я бы хотел, чтобы JS добавил значение cookie так же, как PHP ... есть идеи?

1 Ответ

0 голосов
/ 06 июля 2018
setcookie("first_interaction"+random,<?=json_encode($cookie)?>,365)

Проблема в том, что вы помещаете необработанный JSON в этот вызов метода. Когда javascript анализируется браузером, он превращает его в реальный объект, что наиболее вероятно, почему вы видите [object Object].

Я бы предложил поместить одинарные кавычки вокруг значения, чтобы javascript оставил его в виде строки.

setcookie("first_interaction"+random,'<?=json_encode($cookie)?>',365)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...