用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3010|回复: 9
收起左侧

关于图片验证的求助

[复制链接]
发表于 2009-4-5 22:15:46 | 显示全部楼层 |阅读模式
我想做一个图片验证码,思路是在模型中建立一个图片验证生成类,或者做一个函数。
但我先在控制器里生成,做做试验:
function register(){        $str='123456789ABCDEFGHIJKLMNOPQRSLUVWXYZabcdefghijklmnopqrstuvwxyz';
      $str_len=strlen($str);
      $checknum="";
      for($i=1;$i<=4;$i++){
      $checknum.=$str[rand(0,$str_len)];
      }
      if(strlen($checknum)==3){
     $checknum.=$str[rand(0,$str_len)];
      }
      $im=imagecreatetruecolor(100,30);
      $black = ImageColorAllocate($im, 0,0,0); //设定三种颜色
      $white = ImageColorAllocate($im, 255,255,255);
      $randcolor = ImageColorAllocate($im, rand(71,12),rand(106,62),rand(208,604));
      //$bg=imagecolorallocate($im,255,0,0);
      $te=imagecolorallocate($im,255,255,255);
      imagefill($im,0,0,$randcolor);
      imagestring($im,rand(4,6),rand(1,70),rand(1,10),$checknum,$te);
      header("Content-type: image/png");
      imagejpeg($im);
   }

我发现输出的是乱码,并且提示Message: Cannot modify header information - headers already sent by。。。。
去掉 header("Content-type: image/png");显示的依旧是乱码。
在论坛的源码共享里面有朋友做的验证类,我拿来测试也依旧提示那个错,并显示乱码。
不知道哪位朋友能指点一下!在下感激不尽。
发表于 2009-4-5 23:34:02 | 显示全部楼层
我觉得应该通过视图来输出内容,而不能让控制器直接输出,这不符合 MVC 理念。
 楼主| 发表于 2009-4-6 09:47:26 | 显示全部楼层
我也想通过视图去输出,可是传递到视图也依然是乱码。
发表于 2009-4-6 09:53:02 | 显示全部楼层
你是不是文件的字符集,没有统一
 楼主| 发表于 2009-4-6 10:38:03 | 显示全部楼层
都是UTF-8 仅仅是生成的图片是乱码。
不知道是不是我的方法不对。
发表于 2009-4-6 11:09:14 | 显示全部楼层
图片还能是乱码???我用过一些生成验证码的类库,都很好,没问题呀。
发表于 2009-4-6 11:31:42 | 显示全部楼层
你的代码我试了。没有问题。
在我的环境中。完全可以使用。图片生成正常。
 楼主| 发表于 2009-4-6 11:42:26 | 显示全部楼层
崩溃了。这个代码我离开CI环境就正常,放在这个里面就不行。找到个函数,我试试人家的。
发表于 2009-4-6 12:56:40 | 显示全部楼层
楼主看一下你的文件是不是有 BOM 吧!
什么是 BOM 你搜索一下论坛或者 GOOGLE
发表于 2009-4-6 18:55:33 | 显示全部楼层
都是UTF-8 仅仅是生成的图片是乱码。
不知道是不是我的方法不对。
lyic_lee 发表于 2009-4-6 10:38


太有才了

本版积分规则