setcookie () ожидает, что параметр 2 будет строкой, массивом, в чем проблема? - PullRequest
0 голосов
/ 19 января 2019

В чем проблема?

while($rov = mysql_fetch_array($result)) {
    $expire = time()+(60*60*24*30);
    setcookie('cookie',$rov,$expire);
    $userID = $rov;
}

if(isset($_COOKIE['cookie'])) {
    $userID = $_COOKIE['ID'];
}

if(isset($_COOKIE['cookie'])) {}

Сообщение об ошибке:

Предупреждение: setcookie () ожидает, что параметр 2 будет строкой, а массив указан в /index.php в строке 24

Ответы [ 2 ]

0 голосов
/ 19 января 2019

setCookie () ожидает строку как значение, но переменная $ rov содержит массив, вызывающий ошибку.

вы можете использовать json_encode / json_decode решение, предложенное @Curious_mind или способное сериализовать / десериализовать подход.

setcookie('cookie', serialize($rov), time()+3600);

Then unserialize data:

$data = unserialize($_COOKIE['cookie'], ["allowed_classes" => false]);
0 голосов
/ 19 января 2019

Вы получаете предупреждение

Предупреждение: setcookie () ожидает, что параметр 2 будет строкой, массив указан в /index.php в строке 24

, потому чтоФункция PHP setcookie () принимает строку в качестве второго параметра.Поэтому, если вы хотите сохранить любые значения массива, например, $rov, вы можете использовать json_encode($rev); для установки cookie, для доступа к нему вы можете использовать json_decode($_COOKIE['cookie'],1);

Это способ установить и получить cookie для Массив значения с использованием json_encode () и json_decode ()

Настройка Cookie

setcookie('cookie', json_encode($rov), time()+3600);

Получение Cookie

$data = json_decode($_COOKIE['cookie'], true);
...