zoukankan      html  css  js  c++  java
  • opencart添加SSL证书后后台订单问题

    虽然2.0以后版本对SSL方面的支持比较完善,但是还是有很多遗漏的地方。主要问题都是https和http的问题。在https下的一些处理,比如ajax处理的地址是http,固然报错。

    问题跟踪

    首先我们打开后台订单,会提示个错误,错误内容并没写。我们从审核元素和网页代码可以看出如下。

     

    搜索http:// 可以看到有影响的有两处【实际上,如果config的配置是http和https分开,也就是非全站https的话,会有更多处问题。以后会补充一个文章说这个。】

     

    代码跟踪

    我们先看看网页地址:admin/index.php?route=sale/order/info 。由此找到:

    admin/controller/order.php 文件的 public function info() 这个function,可以看到引用的是order_info.tpl,然后找到TPL,搜索“api/login”看到如下图:

     

    根据“逆追踪”方法,我们从C层处理器发现类似代码:“$order_info['store_url']”

    然后查看相关引入的model层文件,发现如下代码: “$order_query->row['store_url']”

    由此判断(其实之前没看model以为是setting里的)这个地方是order表的store_url 字段。也就是这个问题是,没加https之前下的订单导致的。也有可能是前台没写全网SSL导致的提取错误,这个以后再跟踪代码看看。

    解决问题

    三种方法,一个是改SQL,一个是改代码,一个是写死。

    SQL方法:

    #假设网址是 www.baidu.com
    
    #假设前缀是默认 oc_
    
    UPDATE `oc_order` SET `store_url` = 'https://www.baidu.com/' WHERE 1;

    改代码:

    //打开 admin/controller/order.php
    
    //搜索下面代码
    
    $order_info['store_url']
    
    //全部都替换为
    
    HTTPS_CATALOG

    写死:直接在order_info.tpl里面把<?php echo $store_url; ?>改为你的https地址即可。

    但是这三种方法都只适合单商店用户,如果是多商店关联那种的,应该要处理订单产生时候https地址的问题。如果多个商店有的没有HTTPS,可能会更麻烦一些,具体情况具体解决了。

  • 相关阅读:
    Angular Universal 学习笔记
    SAP Spartacus 如何获得当前渲染页面的 CMS 元数据
    Angular 服务器端渲染的学习笔记(二)
    Angular 服务器端渲染的学习笔记(一)
    第三方外部 Saas提供商如何跟使用 SAP 系统的客户进行对接接口集成
    如何从 SAP Spartacus Product Detail 页面,找到其 Angular 实现 Component 的位置
    具备自动刷新功能的 SAP ABAP ALV 报表
    C++学习目录
    c--条件编译
    c--文件读写--二进制
  • 原文地址:https://www.cnblogs.com/chixiaobai/p/8295087.html
Copyright © 2011-2022 走看看