关于opencart添加SSL证书问题系列1–后台订单问题

这个问题其实以前也遇到过几个客户有,旧版本反而在订单这里貌似没这个问题,不太记得。但是2.0以后版本这个问题比较突出。虽然2.0以后版本对SSL方面的支持比较完善,但是还是有很多遗漏的地方。主要问题都是https和http的问题。在https下的一些处理,比如ajax处理的地址是http,固然报错。

问题跟踪

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

关于opencart添加SSL证书问题系列1--后台订单问题

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

关于opencart添加SSL证书问题系列1--后台订单问题

代码跟踪

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

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

关于opencart添加SSL证书问题系列1--后台订单问题

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

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

关于opencart添加SSL证书问题系列1--后台订单问题

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

解决问题

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

SQL方法:

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

改代码:

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

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

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

最后

由于时间关系,这里只讲了关于config全局配置https的。关于https和http共存的改天讲。这个系列会分开很多个一个个讲。

另外本文提到的一个概念:逆追踪 这个词以后也会单独拿出来讲。

广告

如果需要安装SSL服务,购买SSL证书,解决SSL相关问题,可以联系我付费解决哦。

QQ:184923973

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

图片 表情