为了账号安全,请及时绑定邮箱和手机立即绑定

如何爆炸cookie并将结果放入多维数组

如何爆炸cookie并将结果放入多维数组

PHP
不负相思意 2021-06-29 17:58:25
我是编码新手,所以请善待:)在一个人们可以上传待售或出租房地产的在线市场上工作,我想用 cookie 建立一个最喜欢的列表。我已经设法使用setcookie("$flat_rent_id", $flat_rent_id . "__" . "$offering_type", time() + (86400 * 30), '/');并使用// Construct array of exploded cookies$h = -1;$i = -1;foreach($_COOKIE as $COOKIE => $value) {    $h++;    $i = -1;    $explode = (explode("__", $value, 2));    foreach ( $explode as $item ) {        $i++;        $explodedCookiesArray[$h][$i] = $item . " " ;    }}当我使用打印数组时// Print the constructed array "explodedCookiesArrayecho "explodedCookiesArray";for ($i=0; $i <= count($_COOKIE); $i++){    echo "<br>";    for ($j=0; $j <= count($_COOKIE); $j++){        echo $explodedCookiesArray[$i][$j];    }}echo "<br>";我得到输出explodedCookiesArray378b94ed20765e354ec9790832800ed6 Offering5ce890ed7f11d house_rentOffering5ce8935b812f6 house_saleOffering5ce8f86bbda11 flat_saleOffering5ce93dfdcae32 house_rentOffering5ce9411388315 flat_rent如果我使用print_r($explodedCookiesArray);我得到输出:Array ( [0] => Array ( [0] => 378b94ed20765e354ec9790832800ed6 ) [1] => Array ( [0] => Offering5ce890ed7f11d [1] => house_rent ) [2] => Array ( [0] => Offering5ce8935b812f6 [1] => house_sale ) [3] => Array ( [0] => Offering5ce8f86bbda11 [1] => flat_sale ) [4] => Array ( [0] => Offering5ce93dfdcae32 [1] => house_rent )[5] => Array ( [0] => Offering5ce9411388315 [1] => flat_rent ) ) 尽管如此命令if (isset($explodedCookiesArray[1][1])) {    echo $explodedCookiesArray[1][1] . "<br>";    if ($explodedCookiesArray[1][1] == "house_rent") {        echo "Hello";    } else {        echo "Goodbye";    }}输出以下内容:house_rentGoodbye 有谁知道为什么?我会非常感谢所有的帮助!
查看完整描述

1 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

因为你先说:


$explodedCookiesArray[$h][$i] = $item . " " ;

然后你说:


if ($explodedCookiesArray[1][1] == "house_rent")

比较中没有空格字符。


这段代码比它需要的要冗长得多。如果我正确理解您的数据,foreach那么您只需要循环中的一行:


// test data

$_COOKIE = [

    "PHPSESSID"             => "378b94ed20765e354ec9790832800ed6",

    "Offering5ce890ed7f11d" => "Offering5ce890ed7f11d__house_rent",

    "Offering5ce8935b812f6" => "Offering5ce8935b812f6__house_sale",

    "Offering5ce8f86bbda11" => "Offering5ce8f86bbda11__flat_sale",

];


$explodedCookiesArray = [];

foreach ($_COOKIE as $c) {

    $explodedCookiesArray[] = explode("__", $c);

}


if ($explodedCookiesArray[1][1] == "house_rent") {

    echo "Hello";

} else {

    echo "Goodbye";

}

输出:


Hello

真的,您应该做的是将其存储为值的序列化数组而不是多个 cookie。或者将列表存储在数据库中,并在 cookie 中仅保留一个唯一标识符。


查看完整回答
反对 回复 2021-07-09
  • 1 回答
  • 0 关注
  • 133 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信