首页 » 开源/框架 » ThinkPHP » 正文

ThinkPHP 验证码提示“因其本身有错无法显示” 的解决办法

今天在做ThinkPHP的RBAC时,后台突然退出了,然后想登录的时候,发现验证码不显示了,直接打开验证码的方法,提示“因其本身有错无法显示”,无奈。

查看了下代码,没发现任何问题,然后到网上找了下相关的问题,最后终于解决了。方法如下:

在引入ThinkPHP的图

像处理文件之前,加入ob_clean(); 这样一段代码即可。

ob_clean

(PHP 4 >= 4.2.0, PHP 5)
ob_clean — 清空(擦掉)输出缓冲区

说明:
void ob_clean ( void )
此函数用来丢弃输出缓冲区中的内容。
此函数不会销毁输出缓冲区,而像 ob_end_clean() 函数会销毁输出缓冲区。

更多有关该函数的信息,请点击这里

出现该问题的原因可能是你前面引入的其他文件有多余的输出,导致验证码生成失败。

如果文件内容是纯 PHP 代码,最好在文件末尾删除 PHP 结束标记。这可以避免在 PHP 结束标记之后万一意外加入了空格或者换行符,会导致 PHP 开始输出这些空白,而脚本中此时并无输出的意图。

有关为何PHP文件尽量不使用闭合标签,请看《 PHP结尾不使用闭合标记“?>”的好处

原来的

public function verify(){
        import('ORG.Util.Image');

        Image::buildImageVerify(4, 1, 'png');
    }

修改后

public function verify(){
        ob_clean();
        import('ORG.Util.Image');

        Image::buildImageVerify(4, 1, 'png');
    }

 

发表评论