在 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中的asp.net发送的cookie中检索特定值