【问题标题】:How to set cookie if user has no session?如果用户没有会话,如何设置 cookie?
【发布时间】:2017-12-28 17:02:55
【问题描述】:

我正在做一个网上商店,但现在我被困在购物车上。 简单解释一下我的想法: 如果访问者没有会话并将产品添加到购物车,请使用我给 cookie 的数据设置 cookie。如果用户有一个活动会话并将产品添加到购物车,则保存到数据库。与用户有会话的东西工作正常,但我不知道如何设置 cookie。我在 MVC(飞行)中工作。 控制器代码:

public function shopProduct()
{
    $userid = $_POST['userid'];
    $product = $_POST['product'];
    $productname = $_POST['productname'];
    $color = $_POST['color'];
    $price = $_POST['price'];

    if (!isset($_SESSION['user_id'])) {
        if (strlen($product) < 1) {
            $err['data'] = array("status" => "failed", "return" => "Er is iets misgegaaqn!");
        } else {
            if (setcookie("basket_save", $product, $productname, $color, $price, time() + 30000000, "/")) {
                $err['data'] = array("status" => "success", "return" => "Dit product is toegevoegd aan uw winkelwagen.");
            } else {
                $err['data'] = array("status" => "failed", "return" => "Er is iets misgegaan!");
            }
        }

    } else if (strlen($userid) < 1) {
        $err['data'] = array("status" => "failed", "return" => "Er is iets misgegaaqn!");
    } else {
        $OrderModel = new OrderModel();
        if ($OrderModel->addBasket($userid, $product, $productname, $color, $price)) {
            $err['data'] = array("status" => "success", "return" => "Dit product is toegevoegd aan uw winkelwagen.");
        } else {
            $err['data'] = array("status" => "failed", "return" => "Er is iets misgegaan!");
        }
    }
    exit($err['endpoint'] = json_encode($err['data'], $options = 0));
}

所以我的问题是,我在 cookie 行中输入的错误是什么让 cookie 自己设置感到遗憾。

【问题讨论】:

    标签: php session cookies model-view-controller set


    【解决方案1】:

    这是应该如何使用设置 cookie(来自 php.net 参考) bool setcookie ( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false [, bool $httponly =假]]]]]])

    在你的代码中

    setcookie("basket_save", $product, $productname, $color, $price, time() + 30000000, "/"))

    有 4 个 value 参数,(即错误的参数传递给函数) $productname 指的是 expire 。

    所以让它像 $arrCok = [$product, $productname, $color, $price];

    setcookie("basket_save",$arrCok , time() + 30000000, "/"))

    或将每个 cookie 设置为您要保存的值。

    【讨论】:

    • 我尝试了该代码,但没有成功。如果我喜欢 $arrCok = $productname;并转储我得到的 cookie: ["basket_save"]=> string(34) "Right Value"
    猜你喜欢
    • 1970-01-01
    • 2013-06-21
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    • 2015-12-27
    相关资源
    最近更新 更多