Php 在cookie中存储数组

Php 在cookie中存储数组,php,cookies,Php,Cookies,我想使用set_cookie()函数将数组存储到cookie中。因此,每当我将数组作为参数传递给set_cookie()函数时,它都会返回一个错误: 警告:setcookie()要求参数2为字符串,数组在第3行的C:\xampp\htdocs\folder\sajjad.php中给出 我已经尝试了StackOverflow中关于这个主题的所有答案。但他们都没有工作 <?php $val = array('1','2','3','4'); setcookie("sajja

我想使用set_cookie()函数将数组存储到cookie中。因此,每当我将数组作为参数传递给set_cookie()函数时,它都会返回一个错误:

警告:setcookie()要求参数2为字符串,数组在第3行的C:\xampp\htdocs\folder\sajjad.php中给出

我已经尝试了StackOverflow中关于这个主题的所有答案。但他们都没有工作

<?php  
    $val = array('1','2','3','4');
    setcookie("sajjad",$val,time()+(86400*30));
?>
<!DOCTYPE html>
<html>
<head>
    <title>HOME</title>
</head>
<body>

</body>
</html>
您可以使用将数据转换为可存储在cookie中的表单。e、 g

$val = array('1','2','3','4');
setcookie("sajjad",serialize($val),time()+(86400*30));
要重新获取该值,请使用:


正如评论中所指出的,在cookie中存储数据是不安全的,因为用户可以修改这些数据。使用会话变量更安全。您可以找到有关如何执行此操作的信息。

错误提示,cookie数据必须为字符串格式。更重要的是,您不应该将真实数据存储在cookie中,因为用户可以编辑它们。相反,您可以使用sessionsWelcome等。你可以使用数组。但正如前面的评论所说,您应该避免在cookie中存储真实数据。使用更好。“我已经尝试了StackOverflow中关于此主题的所有可用答案”-您尝试了什么,以及它如何不起作用?Cookie只能存储字符串和数字,因此需要序列化数组。您可以使用PHP的
serialize()
(然后在再次读取值时使用
unserialize()
),或者使用
json\u encode()
json\u decode()
将其存储为json字符串。不过,正如第一条评论所建议的那样,您应该只使用cookie来存储少量非关键或私有的数据,因为客户端可以修改这些数据。输入到Google的“在cookie中存储数组的php”很快就会导致出现错误,这将真正为您提供所需的所有信息。谢谢,伙计!你的回答解决了我的问题。为什么这个答案被否决了?代码中有注释。@Andreas不是我,但与我4分钟前在回答中发布的代码完全相同(只是更改了名称以保护罪犯)。@Nick我没有从任何地方复制。@SajjadAhmed欢迎兄弟。
$val = unserialize($_COOKIE['sajjad'], false);
    $val = array('1','2','3','4');
    $data = serialize($val); //serialize array 
    setcookie("sajjad",$data,time()+(86400*30));
    $retrive_data = unserialize($_COOKIE['sajjad']);//unserialize array
    print_r($retrive_data);//print given array