我在Chrome中丢失了一些会话变量
在阅读本网站上的每个类似问题和答案后,我必须注意:
它不是404 /缺少的favicon问题
也不是重定向问题。会话已正确启动和关闭。
例如,我有$ _SESSION ['customer']和$ _SESSION ['order']变量。 正如预期的那样,$ _SESSION ['customer']拥有客户数据的对象,$ _SESSION ['order']拥有一系列产品。
当我在订单中添加产品时,我需要查找此特定产品的任何客户折扣。然后在Chrome中,缺少$ _SESSION ['customer']变量,并且sql查询没有返回折扣,因为没有客户编号。
让我们为您提供一些代码:
我在更新订单页面,我仍然拥有客户和订单变量 我用ajax请求调用此函数来返回产品列表:
public function live_search_product(){
$this->load->model('orders', 'orders');
$qry = $_GET['qry'];
if (strlen($qry)>0) {
$products = $this->orders_model->search_products($qry, false);
if ($products){
foreach ($products as $product){
echo '<a href="?route=orders/orders/add_product&id='.$product['product_id'].'">'.$product['short_title'] . '</a><br>';
}
}
}
}
我从下拉列表中选择产品,最后进入此功能,我突然失去了我的$ _SESSION ['customer']对象和$ _SESSION ['order']数组。请注意,我的所有其他会话变量仍然存在。
public function add_product() {
$this->load->model('orders', 'orders');
$product = $this->orders_model->get_product_by_id($this->router->id);
$discount = $this->discount->get_discount($product->id, $product->product_group_id, $_SESSION['customer']->id, $_SESSION['customer']->group_id );
$_SESSION['order'][$this->router->id] = array('product' => $product ,
'quantity' => 1,
'rental' => 0,
'bruto' => $product->price_ex,
'discount' => $discount->discount_percentage,
'netto' => ((100 - $discount->discount_percentage)/100) * $product->price_ex,
'total' => ((100 - $discount->discount_percentage)/100) * $product->price_ex);
$this->calculate_order_totals();
}
在Firefox和iexplorer和边缘没有问题,它的工作原理。 我真的希望你有任何其他的建议。
****编辑****
每个控制器都有一个自动调用的索引函数。路线订单/订单将调用订单/订单/索引,例如路线订单/订单/ add_product,将调用订单控制器中的函数add_product(驻留在订单文件夹中)。
事实证明,在Chrome中,我会以某种方式被路由到此订单控制器的索引功能。这是一个概述订单功能,我重置所有订单变量,以确保在我打开新订单时没有留下任何内容。 我已经改变了,所以这个具体情况已经解决了。
然而,当直接调用add_product函数时,无法理解为什么我被重定向到此函数。 有什么想法吗?