php - 在将注册电子邮件作为查询字符串传递给结帐/购物车时,在 opencart 中重建结帐页面

标签 php opencart

<分区>

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

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

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

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

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

我是 opencart 的新手,我不太了解核心功能,所以我搜索了如何实现这一点,但找到了付费的扩展(例如 THIS) ,我的要求是在 URL 内构建它,我在上面解释过。

提供:Opencart安装的是原版,没有安装其他插件。

编辑

我试过跟随。

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 结帐页面不重建废弃产品列表。

最佳答案

我已经更改了 checkout/controller/checkout/cart.php 索引方法,并添加了一个检查以查看自定义 url 是否包含“cmail”。然后我验证 url 中提供的电子邮件地址。此时,我查询数据库以获取客户的“购物车”列(注意我使用了 escape 来防止 SQL 注入(inject)),然后对其进行解码并放入 session 中。如果您点击网址为“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;
                 }          
             }
         }
    }
}

关于php - 在将注册电子邮件作为查询字符串传递给结帐/购物车时,在 opencart 中重建结帐页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25683642/

相关文章:

php - 在不使用表格的情况下均匀间隔多个行元素文本

javascript - 通过 AJAX 检索 PHP JSON 数据 - 数据请求的正确结构

php - file_get_contents() 的问题

php - 如何重定向 https ://to https://www on . htaccess 文件?

php - 在电子邮件 Opencart 中添加自定义字段

PHP+MySQL 获取数据并将其放入数据库

php - 从Gradle文件获取依赖库?

php - 如何在opencart中为全局所有产品设置折扣价

php - OpenCart 是否对 OWASP 前 10 强?