相信大家在使用ecshop模板的时候,很多朋友都会遇到验证码显示不了的问题,特别是做了ecshop二次开发的模板,更容易出现这样的问题,下面最源码来分享一下各种情况的解决办法。
1、(从ECSHOP论坛搜集到的解决方法)
a)、错误原因:
PHP 类,有两种构造函数,一种是跟类同名的函数,一种是 __c**truct()。从PHP5.4开始,对这两个函数出现的顺序做了最严格的定义,必须是 __c**truct() 在前,同名函数在后
b)、解决方法:
调换一下两个函数的前后位置即可。
以 includes/modules/payment/alipay.php
将下面这两个函数的位置互换一下就OK了,__c**truct()在前,alipay()在后
2、没有设置显示的解决办法
ecshop对应页面的验证码需要后台设置了显示,前台才能显示出来,具体操作步骤,登录后台,在系统设置-验证码管理里面,把需要显示验证码的页面选择上提交修改就行。
3、设置了,但是显示不了,显示的是一个红叉叉
(1)后台登录页面和前台评论、留言、注册等页面都不显示
这种情况首先排除空间权限和设置问题(不会查看的可以联系空间商处理),如果没有问题,那么用ECSHOP默认的captcha.php页面替换网站根目录下的页面,如果还是不行,请修改includes目录下的init.php代码
if (!defined('INIT_NO_SMARTY') && gzip_enabled())
{
ob_start('ob_gzhandler');
}
else
{
ob_start();
}
把上面这段代码注释掉,然后在后台清除一下网站缓存。
(2)如果后台登录页面的验证码可以显示,只是前台的不能显示
这种情况一般都是网站做了ecshop二次开发造成的,先用ecshop默认语言包里面的common.php文件覆盖网站的(对应目录是languages/zh_cn),记得先备份自己的一份哦,如果还没有好,那么再把includes目录下的lib_goods.php、lib_order.php、lib_common.php、lib_main.php、lib_insert.php等可能修改过的文件用默认的替换一下,一般只要覆盖了修改过并且存在错误的文件,验证码就会显示正常了,正常过后,再逐步确定到是哪一个文件有错,把错误代码找到,恢复了就行了。
(以上操作过程中,如果你网站有修改过对应文件,覆盖前一定记得备份)