关于wecenter 3.1.9 验证码不显示的问题的解决方法

如果你全新安装Wecenter出现以下情况:
一、登录后台,验证码不显示
1.png

 
二、新用户注册界面,验证码不显示
3.png

 
三、直接在地址栏打开验证码,链接能打开,但显示为乱码
2.png


并且你的php已经支持GD库,或者已经安装过imagemagic,
那么原因就是header头信息不正确,让浏览器认为这是一个html页面,而不是一张png图片,从而不能正常显示图片
解决方法如下:
修改文件 \system\core\captcha.php 

generate() 的 HTTP::no_cache_header();
后加一行: 
header('Content-Type: image/png; charset=UTF-8');
    public function generate() {
$this->captcha->generate();
HTTP::no_cache_header();
header('Content-Type: image/png; charset=UTF-8');
readfile($this->captcha->getImgDir() . $this->captcha->getId() . $this->captcha->getSuffix());
die;
}
修改后,效果如下:
单独打开验证码链接如:http://wenda.wecenter.com/?/account/captcha/
4.png
 
注册和登录界面将正常显示图片:
5.png

 
这个问题在IIS服务器上没有发现,IIS能自动返回正常的图片,而使用nginx的机器上而出现上述问题


8 个评论

非常感谢,这确实高手哇
非常感谢,这确实高手哇
好像还有一种文体是缓存文件夹没有权限吧 记不清了
markzzz 标记一下
这个问题我之前也遇到过,后来不知道被哪位高手解决就了
按你的教程添加了一段代码,但还是不显示验证码,咋回事呢?
先检查你的php有没有gd库支持
还有文件夹权限

要回复文章请先登录注册