| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 782 人关注过本帖
标题:【求指点】这个验证码函数如何获取本次显示的字符并存进$_SESSION中?
只看楼主 加入收藏
勤奋的关键字
Rank: 1
来 自:辽宁
等 级:新手上路
帖 子:51
专家分:2
注 册:2011-10-24
结帖率:72.73%
收藏
已结贴  问题点数:10 回复次数:6 
【求指点】这个验证码函数如何获取本次显示的字符并存进$_SESSION中?
请问各位大牛  我这个验证码类是在网上找的 自己水平不够 写不出来,但是有个问题 显示出这个验证码我会,但是怎么获取本次显示的字符呢? 求大牛们给我指点下 小弟先谢过了!
程序代码:
<?
class Captcha
{
    private $width;
    private $height;
    private $codeNum;
    private $code;
    private $im;
    function __construct($width=80, $height=20, $codeNum=4)
    {
        $this->width = $width;
        $this->height = $height;
        $this->codeNum = $codeNum;
    }
    function showImg()
    {
        //创建图片
        $this->createImg();
        //设置干扰元素
        $this->setDisturb();
        //设置验证码
        $this->setCaptcha();
        //输出图片
        $this->outputImg();
    }
    function getCaptcha()
    {
        return $this->code;
    }
    private function createImg()
    {
        $this->im = imagecreatetruecolor($this->width, $this->height);
        $bgColor = imagecolorallocate($this->im, 0, 0, 0);
        imagefill($this->im, 0, 0, $bgColor);
    }
    private function setDisturb()
    {
        $area = ($this->width * $this->height) / 20;
        $disturbNum = ($area > 250) ? 250 : $area;
        //加入点干扰
        for ($i = 0; $i < $disturbNum; $i++) {
            $color = imagecolorallocate($this->im, rand(0, 255), rand(0, 255), rand(0, 255));
            imagesetpixel($this->im, rand(1, $this->width - 2), rand(1, $this->height - 2), $color);
        }
        //加入弧线
        for ($i = 0; $i <= 5; $i++) {
            $color = imagecolorallocate($this->im, rand(128, 255), rand(125, 255), rand(100, 255));
            imagearc($this->im, rand(0, $this->width), rand(0, $this->height), rand(30, 300), rand(20, 200), 50, 30, $color);
        }
    }
    private function createCode()
    {
        $str = "23456789abcdefghijkmnpqrstuvwxyzABCDEFGHIJKMNPQRSTUVWXYZ";
        for ($i = 0; $i < $this->codeNum; $i++) {
            $this->code .= $str{rand(0, strlen($str) - 1)};
        }
    }
    private function setCaptcha()
    {
        $this->createCode();
        for ($i = 0; $i < $this->codeNum; $i++) {
            $color = imagecolorallocate($this->im, rand(50, 250), rand(100, 250), rand(128, 250));
            $size = rand(floor($this->height / 5), floor($this->height / 3));
            $x = floor($this->width / $this->codeNum) * $i + 5;
            $y = rand(0, $this->height - 20);
            imagechar($this->im, $size, $x, $y, $this->code{$i}, $color);
        }
    }
    private function outputImg()
    {
        if (imagetypes() & IMG_JPG) {
            header('Content-type:image/jpeg');
            imagejpeg($this->im);
        } elseif (imagetypes() & IMG_GIF) {
            header('Content-type: image/gif');
            imagegif($this->im);
        } elseif (imagetype() & IMG_PNG) {
            header('Content-type: image/png');
            imagepng($this->im);
        } else {
            die("Don't support image type!");
        }
    }
}
?>

搜索更多相关主题的帖子: 验证码 color 如何 
2012-12-23 10:10
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:10 
createCode()产生,存于$code成员,在createCode()中加一行代码就行

[ 本帖最后由 cnfarer 于 2012-12-26 07:24 编辑 ]

★★★★★为人民服务★★★★★
2012-12-26 07:22
勤奋的关键字
Rank: 1
来 自:辽宁
等 级:新手上路
帖 子:51
专家分:2
注 册:2011-10-24
收藏
得分:0 
回复 2楼 cnfarer
也就是说我调用这个类中的这个函数然后赋值给一个变量 然后输出这个变量就可以看到本次随即出的字符串?

人生就像程序,得经过一次次的调试才会趋于简单但却完美.
2012-12-26 18:51
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:0 
类成员函数getCaptcha()返回值

★★★★★为人民服务★★★★★
2012-12-27 21:10
勤奋的关键字
Rank: 1
来 自:辽宁
等 级:新手上路
帖 子:51
专家分:2
注 册:2011-10-24
收藏
得分:0 
回复 4楼 cnfarer
我下面的调用写的哪里不对 为什么数不出来 字符呢?
程序代码:
<?
require_once 'captcha.class.php';

$char = new Captcha();

$char->getCaptcha();

echo  $char;

?>

错误提示我说 类Captcha不能转换到 string 型 是我缺什么东西吗? 还望版主继续指点我啊.

人生就像程序,得经过一次次的调试才会趋于简单但却完美.
2012-12-28 09:01
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:0 
echo  $char->getCaptcha();

★★★★★为人民服务★★★★★
2012-12-31 07:24
勤奋的关键字
Rank: 1
来 自:辽宁
等 级:新手上路
帖 子:51
专家分:2
注 册:2011-10-24
收藏
得分:0 
回复 6楼 cnfarer
先祝版主新年快乐,工作顺利!
我改成你写的输出代码,可是还是没有看到字符,是因为 private $code; 被定义为私有变量的关系吗? 所以返回的 $code 值输不出来?可是我试过了 定义为Public也一样输出不出来啊...还请版主明示啊....调用我也调用了  初始化我也初始化了  照你写的输出我也改了,可是为什么还是现实不出来呢...

人生就像程序,得经过一次次的调试才会趋于简单但却完美.
2013-01-04 11:02
快速回复:【求指点】这个验证码函数如何获取本次显示的字符并存进$_SESSION中?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014574 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved