php实现验证码

一、简单的纯数字验证码

新建一个captcha.php:

编写静态HTMl页面,用于呈现验证码:index.html



    
        
        
        确认验证码
    
    
        

验证码:  * 点击图片更换验证码

请输入验证码:

从index.html可以看到,提交的表单是到form.php的,所以还要有一个判断的form.php代码,这里没有做详细的验证,只做了为空判断

alert("验证码正确!");document.location="index.html"';
		}
		else
		{
			echo '';
		}
		exit();
	}
?>
效果如下:

php实现验证码_第1张图片

二、字母加数字验证码

只需要改动captcha.php中红色加粗的代码即可,其他的都不需要改动

//设置需要随机取的值,去掉容易出错的0和O、I和1
        $data = 'abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789';
        //取出值,字符串截取方法 strlen获取字符串长度
        $fontContent = substr($data, rand(0,strlen($data)),1);
        //.=连续定义变量
        $captcha_code .=$fontContent;
        //设置坐标
        $x = ($i*100/4)+rand(5,10);
        $y = rand(5,10);

        imagestring($image, $fontSize, $x, $y, $fontContent, $fontColor);
    }

    //存进session
    $_SESSION['authcode'] = $captcha_code;

    //增加干扰元素,设置雪花点
    for ($i=0; $i<200; $i++) { 
        //设置点的颜色,50-200颜色比数字浅,不干扰阅读
        $pointColor = imagecolorallocate($image, rand(50,200), rand(50,200), rand(50,200));
        //画一个单一像素  imagesetpixel
        imagesetpixel($image, rand(1,99), rand(1,29), $pointColor);
    }

    //增加干扰元素,设置横线
    for ($i=0; $i<4; $i++) { 
        //设置线的颜色
        $lineColor = imagecolorallocate($image, rand(80,220), rand(80,220), rand(80,220));
        //设置线,两点一线
        imageline($image, rand(1,99), rand(1,29), rand(1,99), rand(1,29), $lineColor);
    }

    //设置头部 ,image/png
    header('Content-Type: image/png');
    //imagepng()  建立png图形函数
    imagepng($image);
    //imagedestroy() 结束图形函数 销毁$image
    imagedestroy($image);
?>
效果如下:

php实现验证码_第2张图片

以上两个就已经满足了大部分的验证码需求了。这两个都是最基础的,没有封装成函数。读者可以自行把它封装为一个函数


你可能感兴趣的:(php)