在 php 中更新 cookie 值

Posted

技术标签:

【中文标题】在 php 中更新 cookie 值【英文标题】:update cookie value in php 【发布时间】:2011-11-17 13:17:35 【问题描述】:

我正在通过 php 序列化函数将数组转换为 cookie

$PromoteuserId='1';
$PromoteProductId='2';
$PromoteBrandId='3';
$PromoteProductArray = array("PromoteuserId"=>$PromoteuserId,
                            "PromoteProductId"=>$PromoteProductId,
                              "PromoteBrandId"=>$PromoteBrandId
                        );

$Promotedcart[] = $PromoteProductArray;

setcookie("Promotedcart", urlencode(serialize($Promotedcart)), time()+604800,'/');

当创建 cookie 时,我正在使用反序列化 php 函数。

print_r(unserialize(urldecode($_COOKIE['Promotedcart'])));

我需要更新 cookie 值。例如。 - 我需要在 cookie 中搜索 PromoteProductId 值是否退出,如果它会将 cookie 值 coorespond 更新为 PromoteProductId 。 可以指导我如何更新值?

【问题讨论】:

请不要在用户提交的数据上使用unserialize。这很容易通过使用 PHP 的 __wakeup 和 __destruct 方法的对象注入来利用。您可以使用json_encode/json_decode 代替serialize/unserialize。 owasp.org/index.php/PHP_Object_Injection 【参考方案1】:

您可以简单地将未序列化的 cookie 存储到变量中,然后重置 cookie?

$array = unserialize(urldecode($_COOKIE['Promotedcart']));  
$array[0]["PromoteuserId"] = "New";

setcookie("Promotedcart", urlencode(serialize($array)), time()+604800,'/');

【讨论】:

【参考方案2】:

这个链接最好简化 使用序列化和反序列化数据

https://***.com/questions/9032007/arrays-in-cookies-php/9032082#9032082

【讨论】:

以上是关于在 php 中更新 cookie 值的主要内容,如果未能解决你的问题,请参考以下文章

在php中修改cookie值遇到的奇怪问题

如何在 PHP 中用新值覆盖现有的 Cookie?

如何从php中的asp.net发送的cookie中检索特定值

无法在 ASP.NET 中更新 cookie

“记住我” - 在 cookie 中保留啥? -PHP [重复]

get,post怎么获取cookie