dedecms验证码不显示问题的解决

PHP 林涛 2192℃ 0评论

手头的一套系统在使用dedecms的验证码。源码使用的是gbk编码,对源码进行了转码成utf-8之后发现验证码显示不了了。经过一番研究终于找到原因了。

未知对象

解决方法:

<br />
	ob_clean(); // 这里要清除缓冲区,否则验证码不显示<br />
	if(function_exists(&amp;amp;ldquo;imagejpeg&amp;amp;rdquo;))<br />
	{<br />
	&nbsp;header(&quot;content-type:image/jpeg\r\n&quot;);<br />
	&nbsp;imagejpeg($im);<br />
	}<br />
	else<br />
	{<br />
	&nbsp;header(&amp;quot;content-type:image/png\r\n&amp;quot;);<br />
	&nbsp;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验证码不显示问题的解决

喜欢 (0)
发表我的评论
取消评论

表情