商城笔记13——验证码

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/nanajinshengyonggan/article/details/79677612

验证码

就是有字母或文字的图片,并且要有一定的干扰,还要能够在看不清的情况下进行刷新。流程如下:
1.造画布,不填充,默认的画布是黑色的
2.造颜料准备写字
3.写字
imagestring——水平的画一行字符串
说明: bool inagestring(resource i m a g e , i n t font, int x , i n t y,string s , i n t col)
参数分别代表:画布资源,字体大小(1~5中选择),字符最左上角的X坐标,Y坐标,要写的字符串,颜色

/* 
1.造画布
*/
$im = imagecreatetruecolor(50,25);
//不填充,默认的画布是什么颜色的呢
//答:黑色
//2.造颜料准备写字
$red = imagecolorallocate($im,255,0,0);

//3.写字
//imagestring------水平的画一行字符串
//说明 
//bool inagestring(resource $image,int $font, int $x,int $y,string $s,int $col)
//参数分别代表:画布资源,字体大小(1~5中选择),字符最左上角的X坐标,Y坐标,要写的字符串,颜色
//
//
$str = substr(str_shuffle('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz23456789'),0,4);
imagestring($im,5,0,0,$str,$red);
header('content-type: image/png');
imagepng($im);//直接输出

运行结果如下:
这里写图片描述


进一步改进后:验证码可以随机改变颜色,也会有干扰线生成

//1.造画布
$im = imagecreatetruecolor(50,25);

//2.造颜料准备写字
//$red = imagecolorallocate($im,255,0,0);
//填充浅色背景
$gray = imagecolorallocate($im,220,220,220);

//随机颜色
$randcolor = imagecolorallocate($im,mt_rand(100,150),mt_rand(100,150),mt_rand(100,150));
$linecolor1 = imagecolorallocate($im,mt_rand(100,150),mt_rand(100,150),mt_rand(100,150));
$linecolor2 = imagecolorallocate($im,mt_rand(100,150),mt_rand(100,150),mt_rand(100,150));
$linecolor3 = imagecolorallocate($im,mt_rand(100,150),mt_rand(100,150),mt_rand(100,150));
//填充背景
imagefill($im,0,0,$gray);

//画干扰线
imageline($im,0,mt_rand(0,25),50,mt_rand(0,25),$linecolor1);
imageline($im,0,mt_rand(0,25),50,mt_rand(0,25),$linecolor2);
imageline($im,0,mt_rand(0,25),50,mt_rand(0,25),$linecolor3);

//3.写字
//imagestring------水平的画一行字符串
//说明 
//bool inagestring(resource $image,int $font, int $x,int $y,string $s,int $col)
//参数分别代表:画布资源,字体大小(1~5中选择),字符最左上角的X坐标,Y坐标,要写的字符串,颜色
//
//
$str = substr(str_shuffle('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz23456789'),0,4);
imagestring($im,5,0,0,$str,$randcolor);
header('content-type: image/png');
imagepng($im);//直接输出

运行结果如下:
这里写图片描述


进一步改善,可以随机刷新

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <script type = "text/javascript">
        function chv(){
        var vcode = document.getElementsByTagName('img')[0];
        vcode.src= "04.php?_s"+Math.random();
        }
       </script>
    </head>
    <body>
    验证码:<input type = "text" name = 'yanzhengma' />
    <img src = '04.php' onclick='chv()'; />

    </body>
</html>

运行结果如下:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/nanajinshengyonggan/article/details/79677612