手头的一套系统在使用dedecms的验证码。源码使用的是gbk编码,对源码进行了转码成utf-8之后发现验证码显示不了了。经过一番研究终于找到原因了。
未知对象
解决方法:
<br /> ob_clean(); // 这里要清除缓冲区,否则验证码不显示<br /> if(function_exists(&amp;ldquo;imagejpeg&amp;rdquo;))<br /> {<br /> header("content-type:image/jpeg\r\n");<br /> imagejpeg($im);<br /> }<br /> else<br /> {<br /> header(&quot;content-type:image/png\r\n&quot;);<br /> imagepng($im);<br /> }<br />
ob函数的使用可以去问google大神。再放出一个小例子:
</p> <p> ob_start(); #开启缓冲<br /> phpinfo();<br /> $phpinfo = ob_get_contents(); #该函数可以捕捉缓冲区的输出到一个变量里面<br /> //文件读写操作<br /> ob_clean(); #关闭缓冲<br /> print $phpinfo; #输出内容<br /> //phpinfo()<br />
ob函数的要点是:
·使用PHP ob_start()函数打开browser的cache,这样可以保证cache的内容在你调用flush(),ob_end_flush()(或程序执行完毕)之前不会被输出。
·现在的你应该知道你所拥有的优势:可以在任何输出内容后面使用header,setcookie以及session,这是PHP ob_start()函数一个很大的特点;也可以使用ob_start的参数,在cache被写入后,然后自动运行命令,比如ob_start(”ob_gzhandler”);而我们最常用的做法是用ob_get_contents()得到cache中的内容,然后再进行处理……
·当处理完毕后,我们可以使用各种方法输出,flush(),ob_end_flush(),以及等到程序执行完毕后的自动输出。当然,如果你用的是ob_get_contents(),那么就要你自己控制输出方式了。
如需转载请注明: 转载自26点的博客
本文链接地址: dedecms验证码不显示问题的解决
转载请注明:26点的博客 » dedecms验证码不显示问题的解决