首页 文章

在opencart中重建结账页面,将已注册的电子邮件作为查询字符串传递给checkout / cart [关闭]

提问于
浏览
6

我需要重建结帐页面,其中包含最新的废弃产品 .

如果您已经登录到opencart消费者站点并点击此URL - http://www.example.com/index.php?route=checkout/cart,它肯定会列出购物车中的所有产品(尚未购买) .

没有登录消费者网站,如果有人直接点击此网址 - http://www.example.com/index.php?route=checkout/cart&email=someone@example.com - 它将列出 someone@example.com (也称为 abandoned products/cart )尚未购买的所有产品,前提是 someone@example.com 是opencart网站的注册用户 .

我想将该网址中的电子邮件地址作为查询字符串传递到结帐/购物车页面,并使用该地址返回该客户电子邮件的废弃产品 .

如何在结帐/购物车页面中收集该电子邮件并向用户显示废弃的购物车产品?

我对 opencart 非常感兴趣,我对核心功能知之甚少,所以我搜索了如何实现这一点,但是使用了付费的扩展(例如THIS),我的要求是让它在URL中构建,我上面解释过 .

ProvidedOpencart 安装是库存版本,没有安装其他插件/插件 .

EDIT

我试过跟随 .

if(isset($this->request->get['email'])) 
{ 
    $email = $this->request->get['email']; 
    $cart_details = $this->db->query("SELECT cart FROM " . DB_PREFIX . "customer c where c.email = '" . $email . "'"); // just for tesing, i will fix this to prevent SQL injection.
    $this->session->data['cart']= $cart_details->row['cart']; 
}

当我用 "$cart_details->row['cart']" 回音时,它获得了所需的值,但即使将该值设置为 session ,结帐页面也不会重建被遗弃产品的列表 .

1 回答

  • 14

    我更改了checkout / controller / checkout / cart.php索引方法,并添加了一个检查以查看自定义URL是否包含"cmail" . 然后我验证网址中提供的电子邮件地址 . 此时,我查询数据库以获取客户的"cart"列(注意我已使用 escape 来阻止SQL注入),然后将其解码并放入会话中 . 如果您使用网址"localhost/index.php?route=checkout/cart&cmail=some@domain.com"点击网站,则会在页面中重建购物车 . 我使用了以下代码 .

    if(isset($this->request->get['cmail']))
    {
        $email = $this->request->get['cmail'];  
        if(filter_var($email, FILTER_VALIDATE_EMAIL))
        {
            $cart_details = $this->db->query("SELECT cart,customer_id FROM " . DB_PREFIX . "customer WHERE LOWER(email) = '" . $this->db->escape(utf8_strtolower($email)) . "'");
    
             if($cart_details->num_rows > 0)
             {
                 $cart_data = $cart_details->row['cart'];
                 if ($cart_data && is_string($cart_data)) {
                     $cart = unserialize($cart_data);
    
                     foreach ($cart as $key => $value) {
                        $this->session->data['cart'][$key] = $value;
                     }          
                 }
             }
        }
    }
    

相关问题