ECSHOP在PHP5.3以上出现构造函数报错的解决方法

PHP高版本ECSHOP报错,在PHP5.3以上的版本会出现下面这些错误:
Strict Standards: Redefining already defined constructor for class chinabank in /data/web/includes/modules/payment/chinabank.php on line 85

Strict Standards: Redefining already defined constructor for class paypal_ec in /data/web/includes/modules/payment/paypal_ec.php on line 96

Strict Standards: Redefining already defined constructor for class shenzhou in /data/web/includes/modules/payment/shenzhou.php on line 81

Strict Standards: Redefining already defined constructor for class ips in /data/web/includes/modules/payment/ips.php on line 82

Strict Standards: Redefining already defined constructor for class balance in /data/web/includes/modules/payment/balance.php on line 79

Strict Standards: Redefining already defined constructor for class alipay in /data/web/includes/modules/payment/alipay.php on line 85

Strict Standards: Redefining already defined constructor for class tenpay in /data/web/includes/modules/payment/tenpay.php on line 83

Strict Standards: Redefining already defined constructor for class post in /data/web/includes/modules/payment/post.php on line 79

Strict Standards: Redefining already defined constructor for class paypal in /data/web/includes/modules/payment/paypal.php on line 82

Strict Standards: Redefining already defined constructor for class tenpayc2c in /data/web/includes/modules/payment/tenpayc2c.php on line 83

Strict Standards: Redefining already defined constructor for class cappay in /data/web/includes/modules/payment/cappay.php on line 81

Strict Standards: Redefining already defined constructor for class bank in /data/web/includes/modules/payment/bank.php on line 79

Strict Standards: Redefining already defined constructor for class kuaiqian in /data/web/includes/modules/payment/kuaiqian.php on line 83

Strict Standards: Redefining already defined constructor for class cod in /data/web/includes/modules/payment/cod.php on line 82

解决办法:
将所有的构造函数放到前面:
如alipay.php

放到

前面。

ECSHOP提示Strict Standards: Only variables should be passed by reference in报错的解决方法

保哥将之前在PHP5.3上安装的ECSHOP网站搬到PHP5.4的主机上时,发现首页顶部、左侧和底部出现:

Strict Standards: Only variables should be passed by reference in D:\www\includes\cls_template.php on line 418

的报错信息。原因是因为PHP5.3以上的版本默认只能传递具体的变量,而不能通过函数的返回值来传递,所以解决办法就是这段代码中的explode就要移出来重新进行赋值:

找到includes目录下的cls_template.php文件进行编辑,查找到以下代码:

替换为:

保存之后出错页面顶部的报错没掉了,左侧和底部如果还有报错还需要去ecshop的后台点击清除缓存才能去除。

另一种解决方法是修改php.ini的配置,把error_reporting参数改成

这个意思是显示所有除了严格模式的错误,改完之后找到includes目录下的init.php文件进行编辑,查找到以下代码:

替换为:

然后在ECSHOP后台清除缓存。这样includes下的cls_template.php中的代码就可以不用改,而且程序可以正确运行。

 

ECSHOP提示Deprecated: preg_replace()报错的解决方法

在PHP5.5环境下运行的ECSHOP会提示

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in…….

这个错误。出现这个报错的原因是preg_replace()函数中用到的修饰符 /e 在 PHP5.5中已经被弃用了。如果你的PHP版本恰好是PHP5.5,那你的ECSHOP肯定会显示上面的错误提示。

preg_replace()错误的解决办法:

从那段错误提示信息中可以知道需要使用preg_replace_callback来代替preg_replace,使用编辑器(如:notepad++或editplus)打开文件 includes/cls_template.php ,找到

替换为

问题解决。

如果ECSHOP中其它页面也报类似的 preg_replace错误,也可用上面的通用方法解决。

批量设置ECSHOP广告下线时间

进入ECSHOP后台数据库管理里的SQL查询,复制粘贴下面这条语句,即可将所有的广告结束日期修改为2023-05-13

1683897600是Unix时间戳(Unix timestamp)转化的具体时间是2023/5/12 21:20:0

如果想要设定自己的时间,可以进http://tool.chinaz.com/Tools/unixtime.aspx进行在线转换

ECshop的/admin/shopinfo.php文件SQL注入漏洞修复方法

ecshop的后台编辑文件/admin/shopinfo.php中,对输入参数id未进行正确类型转义,导致整型注入的发生。
修复方法:
(大概在第53、71、105、123行,4个地方修复方式都一样)

 

修改为

 

ECshop的/admin/shophelp.php文件SQL注入漏洞修复方法

ecshop的后台编辑文件/admin/shophelp.php中,对输入参数$_POST[‘id’]未进行正确类型转义,导致整型注入的发生。
修复方法:
(大概在第81、105、133、155行,4个地方修复方式都一样)

 

修改为

 

ECshop的/admin/comment_manage.php文件SQL注入漏洞修复方法

ecshop的/admin/comment_manage.php中,对输入参数sort_by、sort_order未进行严格过滤,导致SQL注入。

修复方法:
编辑comment_manage.php找到以下代码(大概在第336行)

 

修改为

 

ECshop的/includes/lib_insert.php文件SQL注入漏洞修复方法

ecshop的/includes/lib_insert.php文件中,对输入参数未进行正确类型转义,导致整型注入的发生。

修复方法:
直接下载的ecshop 2.7.3版本文件/includes/lib_insert.php中在139行加入代码

 

在271行放入代码

 

在310行放入代码

 

修改后上传替换。

ECshop的/admin/affiliate_ck.php文件SQL注入漏洞修复方法

ecshop的后台编辑文件/admin/affiliate_ck.php中,对输入参数auid未进行正确类型转义,导致整型注入的发生。
修复方法:
找到以下代码,

 

 

前加上

 

即可修复。

ECshop批量修改商品详情图片路径中的二级目录地址

安装在二级目录下的ecshop切换到根目录时,原来的商品详情里面上传的图片带的路径会有二级目录部分,切换后导致商品详情里面的图片不显示了,图片太多应该如何批量修改商品详情图片路径地址呢?下面提供一下SQL语句来批量替换字符串:

SQL语句格式为:update [表名] set 字段名 = replace(与前面一样的字段名,’原本内容’,’想要替换成什么’)

对应改成处理上面问题的SQL语句:

 

例如改成:

 

把二级目录替换为空就行了,这样就轻松解决了一个比较令人烦恼的问题。