验证码类的问题
发布于:2022-01-17 09:50:54
#1 xim
在表单中用代码

alt="Not clear, click on change" style="cursor:pointer"/>可以出来效果
但用来实现时

就是出不来效果,
真是怪啊,下载
http://bbs.speedphp.com/thread-25-1-2.html的verimg调试有用,但放入自己框架中就是没有效果不显示ob_clean和UTF8-BOM或空格等问题是不存在的啊。
2011-11-16 12:01:02
#3 xim
我就是用这个例子调试有用,但放到自己的案例中就没有用了,我唯一和他不同的就是:
我的controller文件夹中有两个文件夹admin、index。要使用认证类的控制器在admin中的main类中
class main extends spController{
...
function index(){
$this->display("admin/form.html");
}
function verifyCode(){
$image=spClass('CheckCode');
$_SESSION['verify_code']=$image->show();
}
...
form.html:显示验证码显示验证码

}
admin.php:// 载入配置与定义文件
require("config.php");
// 当前模块附加的配置
$spConfig['controller_path'] = APP_PATH.'/controller/admin/';
$spConfig['model_path'] = APP_PATH.'/model/'.basename(__FILE__,".php");
$spConfig['launch'] = array(
'router_prefilter' => array(
array('spAcl','maxcheck') // 开启强制的权限控制
),
);
$spConfig['ext'] = array(
'spAcl' => array( // acl扩展设置
// 在acl中,设置无权限执行将lib_admin类的acljump函数
'prompt' => array("lib_sysuser", "acljump"),
),
);
// 载入框架
require(SP_PATH."/init.php");
spRun();
?>
权限也给了
2011-11-16 14:54:51
#4 jake
差很远啊,例子是一个应用程序,你现在是多入口,也就是多个应用程序。
先看看
http://www.speedphp.com/release-dirs.html这个,了解清楚多入口的使用。
问题应该是在<{spUrl c=main a=verifyCode}>这个显示上,因为是多入口,所以应该选对入口才行。
设置:
'url' => array(
'url_path_base' => 'admin的入口文件',
),
2011-11-16 15:30:02
#5 xim
我就是参考
http://www.speedphp.com/release-dirs.html中的例子来的,其他的功能都有用,文件上传类也有用,现在加验证码类后,就没有用了。
2011-11-17 10:20:15
#6 jake
点击“看不清楚,点击图片刷新”之后怎么样
2011-11-17 10:21:46
#7 xim
我就是用这个例子调试有用,但放到自己的案例中就没有用了,我唯一和他不同的就是:
我的controller文件夹中有两个文件夹admin、index。要使用认证类的控制器在admin中的main类中
class main extends spController{
...
function index(){
$this->display("admin/form.html");
}
function verifyCode(){
$image=spClass('CheckCode');
$_SESSION['verify_code']=$image->show();
}
...
form.html:
显示验证码显示验证码

}
admin.php:// 载入配置与定义文件
require("config.php");
// 当前模块附加的配置
$spConfig['controller_path'] = APP_PATH.'/controller/'.basename(__FILE__,".php");$spConfig['model_path'] = APP_PATH.'/model/'.basename(__FILE__,".php");$spConfig['launch'] = array(
'router_prefilter' => array(
array('spAcl','maxcheck') // 开启强制的权限控制
),
);
$spConfig['ext'] = array(
'spAcl' => array( // acl扩展设置
// 在acl中,设置无权限执行将lib_admin类的acljump函数
'prompt' => array("lib_sysuser", "acljump"),
),
);
// 载入框架
require(SP_PATH."/init.php");
spRun();
?>
其入口地址也改了啊
2011-11-17 10:24:13
#8 xim
class main extends spController{...
function index(){
$this->display("admin/form.html");
}
function verifyCode(){
$image=spClass('CheckCode');
$_SESSION['verify_code']=$image->show();
dump($_SESSION['verify_code']);
break;
}
...
form.html:显示验证码显示验证码

}
dump后在iframe中显示出来的是
�PNG IHDR4����PLTE���td�xvj{nny��l���y=��OayQ�϶xP����Hʴ@�?�ȝ,E�w� |X�Ąp��B�T�N��/`����k��j� ?B++�(D��Wj��I ���[��Å�!$ա�f5|����Pm�lU��t% J�!O���0v����9�~ �o�(>!'\� <�ʂ��y��,�DrIDAT8���Q� `��D�?YHR�\k���E� �E�W�zdT^,�J)g���1E�"��ך/"bW���d�Nq $/�+�`�&ASjr�i�Qe�~�!Q�̮LJ�L ���{%�� x^�IEND�B`�
A87F
乱码
2011-11-17 11:17:23
#9 jake
如果图片显示乱码,那么就是在图片显示之前,有BOM或者空格之类的。
在
$_SESSION['verify_code']=$image->show();
改成
ob_clean();ob_start();$_SESSION['verify_code']=$image->show();
而且麻烦回答一下我上面的问题。
2011-11-17 11:51:45
#10 xim
真是不好意思,一下子没有注意你的问题了。点击“看不清楚,点击图片刷新”之后没有反应,现在我如果图片显示乱码,那么就是在图片显示之前,有BOM或者空格之类的。
在
$_SESSION['verify_code']=$image->show();
改成
ob_clean();ob_start();
$_SESSION['verify_code']=$image->show();
后效果还是没有,和上面8楼的显示一样,

}
在iframe里是乱码,后面的img中不显示。
...
2011-11-17 12:54:08
#11 xim
空格之类应该是没有啊,否则换为

怎么就会显示?
2011-11-17 12:56:04
#12 jake
不要在图片显示的action里面再用dump之类的
function verifyCode(){
$image=spClass('CheckCode');
ob_clean();ob_start();
$_SESSION['verify_code']=$image->show();
exit(0);
}
然后只用在img上面,不要用iframe
乱码并非不显示图片,而是把图片的二进制显示出来——这是因为图片的格式被空格或者BOM之类的破坏了。
在单独一个文件中,因为没有载入别的东西,所以会显示。上面你的代码里面有dump或者别的文件有空格或BOM,所以才会被破坏了二进制。这点是这样判断出来的。
而且在我给的例子里面是OK的,所以问题并不是出在框架或者图片类上,而是出在空格等方面。
2011-11-17 13:01:45
#13 xim
谢谢,空格一般如何检查呢?是哪里的空格呢
2011-11-17 16:42:55
#14 jake
谢谢,空格一般如何检查呢?是哪里的空格呢
xim 发表于 2011-11-17 16:42 
看你载入的类(PHP文件),文件开头或者结束,有没有空格。
2011-11-17 17:42:23