Php Yii2-压缩cookie值或更好的替代方案
我正在处理一个现有代码,该代码将订单项目的详细信息存储在cookie中 在控制器中:Php Yii2-压缩cookie值或更好的替代方案,php,yii2,Php,Yii2,我正在处理一个现有代码,该代码将订单项目的详细信息存储在cookie中 在控制器中: public function actionAdd2cart($id, $url, $instructor_id, $location_id, $start_time, $date1) { $ep = Yii::$app->getTable->settings('general','enable_payment'); $order_item = \Yii::$app->getRe
public function actionAdd2cart($id, $url, $instructor_id, $location_id, $start_time, $date1) {
$ep = Yii::$app->getTable->settings('general','enable_payment');
$order_item = \Yii::$app->getRequest()->getCookies()->getValue('order_item');
{
$model = ClassDuration::find()->where(['id' => $id])->One();
$model1 = Instructor::find()->where(['user_id' => $instructor_id])->One();
$time = strtotime($start_time);
$duration = $model1['instructor_duration'];
$endTime = date("h:i A", strtotime('+' . $duration . ' minutes', $time));
$fees = Instructor::find()->where(['user_id' => $model['instructor_id']])->one();
$order_item[] = [
'duration' => date('h:i A', strtotime($start_time)) . '-' . $endTime,
'starttime' => $start_time,
'endtime' => $endTime,
'id' => $model->id,
//'price' => $fees['instructor_fees'], this is disabled as payment info is not needed and to increase the cookie size
'q' => 1,
'date' => $model->start_date,
'instructor_id' => $instructor_id,
'location_id' => $location_id,
'date1' => $date1,
'datetime' => $date1 . "-" . $start_time . "i" . $instructor_id,
]; //product details array
}
/********** cookies for product details **********/
$cookie = new \yii\web\Cookie([
'name' => 'order_item',
'value' => $order_item,
'expire' => time() + (60 * 60 * 24),
]);
Yii::$app->getResponse()->getCookies()->add($cookie); // add product deatils to cookies
if ($url == 'view') {
return $this->redirect(Yii::$app->request->referrer);
} else {
// echo 1;
}
}
现在,我在这段代码中遇到的问题是,当将项目添加到购物车时,它允许根据不同的浏览器在购物车中添加6-8个项目,并且由于cookie大小的限制,我无法将更多项目添加到购物车中
我正在寻找一种方法,比如在设置cookie之前是否可以压缩cookie值,在访问cookie时是否可以解压缩cookie值
或者其他合适的解决方案。可能将项目存储在服务器中,cookie应该包含该列表的唯一密钥,或者只使用会话。您好,您好,您的意思是我可以使用-`$session=new\yii\web\session…`而不是
$cookie=new\yii\web\cookie吗([
我是否需要重新编写代码以适应会话?我的意思是,不要将项目存储在cookie中,而是将它们存储在会话中。