最近用到DEDE cms ,后台登录的验证码死活不能显示了。
开始的时候,我以为是环境问题, GD2是不是出问题了。
而且,我重新安装了一个DEDE ,发现其验证码可以正常显示,由些可排除,不是环境的问题。
那就是代码的问题了,我把所有调用路径上的代码都复查了一次,没问题。
我更多的是想到的是 可能是某个 php 文件中 <?php 标记前可能有空格,或其它什么东西之类,实践证明,是没有的。
还好,虽然是一个人做的项目,我还是使用了SVN,好吧,我一个版本一个版本的回滚,终于在某个版本的验证码出回来。回来了,终于回来了。
然后发现, /data/common.inc.php 问题在这个文件上,我比较了文件内容,从正常到出问题的那版本的内容没有变化。
奇怪。
难道不成是文件编码问题,项目是 utf-8 , 难不成是 gb2312 .
是,UTF-8啊,不过,再细看,下面多了一行。 “byte order mark is utf-8(bom)”。 (什么意思:见 http://blog.csdn.net/thimin/article/details/1724393)。
找到问题了,就好说了。
删除这个文件,再重新建一个同名文件,把内容再放进去。(友情提示,不要CTRL+A,CTRL+C ,这种做有可能又创建了一个bom文件,我说的是有可能啊。)
好了。问题解决了。
PS:关于这个验证码不显示的问题,有些人给出的方法是改 login.php , 然后进去系统,停用验证码。这种方法,我表示我也是这样做的。但作为一个严谨的代码工人来讲,不应该做这种事,前前后后经过半个月,还好,解决了这个问题了。