PHP专题

解决thinkphp验证码:出错、无法显示的问题

在thinkPHP验证码这一块,后台正常显示,前台不显示的问题。

官方提示:

如果无法显示验证码,请检查:

1、PHP是否已经安装GD库支持;

2、输出之前是否有任何的输出(尤其是UTF8BOM头信息输出);

3、Image类库是否正确导入;

3、如果是中文验证码检查是否有拷贝字体文件到类库所在目录;

测试半天,不行

网上找来一个能用的方法,放到一个文件里执行可用,进入到tp里面通过index.php入口进去就是小 x
然后能用的方法所在文件吧编码改为utf-8 含有bom的编码也会出现小 X ,其他编码都会出来验证码
初步判断是tp执行到输出验证码的前面有内容输出,主管想到了清除之前的输出就行
类似:
<?php
ob_start();//不加这个是不行的(貌似不加可以)
echo “不要显示”;
ob_end_clean();
echo “只要显示这”;
?>

解放方法

修改生成验证码方法:
//生成验证码
public function verifyimg(){
import(“ORG.Util.Image”);
ob_end_clean();
Image::buildImageVerify();
}

正确调用验证码的方法如下:

action中这样写
import(“ORG.Util.Image”);//这个可以在function里,也可以在外。我使用的时候没有区别啊。写在外边的目的是为了其他的function也可以调用。
Public function verify(){
Image::buildImageVerify();
}
html里这样写
<input id=”txtverify” value=”” size=”20″ type=”text” name=”txtverify” />
<img id=”verifyImg” src=”__URL__/verify” onClick=”changeVerify()” title=”点击刷新验证码”/>
刷新的js是这样的
<script language=”JavaScript”>
function changeVerify(){
var timenow = new Date().getTime(); document.getElementById(‘verifyImg’).src=’__URL__/verify/’+timenow;
}
</script>
验证这样写
if($_SESSION[‘verify’] != md5($_POST[‘txtverify’]))
Avatar photo

人生长恨水长东

留言

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据