【问题标题】:Storing Array in a cookie [duplicate]将数组存储在 cookie 中 [重复]
【发布时间】:2019-01-08 11:28:41
【问题描述】:

我想使用 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 数据必须为字符串格式。更重要的是,您不应该将真实数据存储在 cookie 中,因为用户可以编辑它们。相反,您可以使用会话
  • 欢迎您。你可以json_encode你的数组。但正如之前评论中所说,您应该避免在 cookie 中存储真实数据。使用sessions 更好。
  • “我已经尝试了 StackOverflow 中关于此主题的所有可用答案” - 您尝试了哪些方法,但没有成功? Cookie 只能存储字符串和数字,因此您需要对数组进行序列化。您可以使用 PHP 的 serialize()(然后在再次读取值时使用 unserialize())或使用 json_encode()json_decode() 将其存储为 json 字符串。不过,正如第一条评论所暗示的那样,您应该只使用 cookie 来存储少量不重要或不私有的数据,因为它可以被客户端修改。
  • “php 在 cookie 中存储数组”在 Google 中输入很快就会导致 stackoverflow.com/questions/9032007/arrays-in-cookies-php,这应该会给你所有你需要的信息。

标签: php cookies


【解决方案1】:

您可以使用serialize 将您的数据转换为可以存储在cookie 中的形式。例如

$val = array('1','2','3','4');
setcookie("sajjad",serialize($val),time()+(86400*30));

要再次取回值,请使用unserialize

$val = unserialize($_COOKIE['sajjad'], false);

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

【讨论】:

    【解决方案2】:
        $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
    

    【讨论】:

    • 谢谢,伙计!你的回答解决了我的问题。
    • 为什么这个答案被否决了?代码中有cmets。
    • @Andreas 这不是我,但它与我 4 分钟前在答案中发布的代码完全相同相同(仅更改了名称以保护有罪者)。
    • @Nick 我没有从任何地方复制。
    • @SajjadAhmed 欢迎您的兄弟。
    猜你喜欢
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 2011-06-10
    • 1970-01-01
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    • 2012-02-20
    相关资源
    最近更新 更多