【问题标题】:Incremented $_COOKIE[array] not working?增量 $_COOKIE[array] 不起作用?
【发布时间】:2012-08-04 22:50:19
【问题描述】:

我使用$_COOKIE[array] 来保存单个输入的数据。仅当用户两次输入相同的值时,才会提交此输入。例如,如果他们提交了苹果,然后是橙子,然后是香蕉,然后是苹果,那么表单将在“apple”的第二次出现时提交。

我阅读了[本教程]( http://phpprogramming.wordpress.com/2007/03/06/php-cookies-tutorial-and-examples/)。

for ($i = 1; $i < 10; $i++) {
    if (!isset($_COOKIE[$i])) {
        setcookie("query" . [$i],$query,time()+604800,"/");
        break1;
    }
}
foreach ($_COOKIE["query"] as $key => $value) {
    echo "$key:$value";
}

我认为这可能是语法错误,因为我得到:

Warning: Invalid argument supplied for foreach()

如果您知道更好的方法(不能是 mySQL),请告诉我!

【问题讨论】:

    标签: php


    【解决方案1】:

    $_COOKIE['query'] 不能存储数组。这也是为什么在 foreach 中尝试使用它时会出错的原因。不过,您可以在保存数组之前对其进行序列化。像这样的

    $array = array();
    for ($i = 1; $i < 10; $i++) {
        $array[] = $i;
    }
    setcookie("query",urlencode(serialize($array)),time()+604800,"/");
    
    $query = unserialize(urldecode($_COOKIE['query']));
    foreach ($query as $key => $value) {
        echo "$key:$value";
    }
    

    也可以看看这篇 update cookie value in php 的帖子,了解为什么使用 urlencode / urldecode

    【讨论】:

    • 我收到通知:unserialize(): Error at offset 0 of 8 bytes in C:\xampp\htdocs\search.php on line 83 Warning: Invalid argument provided for foreach() in C :\xampp\htdocs\search.php 第 84 行
    • 没有测试我的代码,抱歉。在这里找到了解决方案。 stackoverflow.com/questions/7425774/update-cookie-value-in-php 会调整我的答案。
    • 摆弄了一个小时后,我看到您必须将所有cookie值输入 $array = array();我一直无法弄清楚如何做到这一点。
    【解决方案2】:

    $_COOKIE["query"] 不是数组,这就是产生错误的原因。

    【讨论】:

    • 您能解释一下我该如何解决这个问题吗?我正确地遵循了教程。
    • 对不起,我不再支持电脑了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    • 2012-07-10
    相关资源
    最近更新 更多