基于PHP制作验证码
网站注册、登录又或者是留言页面,都需要注册码来验证当前操作者的合法性,为了防止网站被机器恶意注册。 生成验证码无非就那么几个步骤,首先是获取一个随机字符串,然后创建一个布画,将生成的字符串写到布画上,我们还可以在布画上画线画雪花,现在帖一段生成验证码的代码。 源代码:$_width=75;
$_height=25; //创建一张图像 $_img=imagecreatetruecolor($_width,$_height); //白色背景 //黑色边框 //随即画出5个线条 //雪花 //输出验证码 for($i=0;$i<strlen($_SESSION['code']);$i++) //输出图像 代码中将使用以下函数:mt_rand — 生成更好的随机数 int mt_rand ([ int $min ],int $max )很多老的 libc 的随机数发生器具有一些不确定和未知的特性而且很慢。PHP 的 rand() 函数默认使用 libc 随机数发生器。 mt_rand()函数是非正式用来替换它的。该函数用了Mersenne Twister中已知的特性作为随机数发生器,它可以产生随机数值的平均速度比 libc 提供的 rand() 快四倍。 dechex — 十进制转换为十六进制返回一字符串,包含有给定 number参数的十六进制表示。所能转换的最大数值为十进制的 4294967295,其结果为 "ffffffff"。 imagecreatetruecolor — 新建一个真彩色图像 resource imagecreatetruecolor ( int $x_size,int $y_size ) imagecreatetruecolor() 返回一个图像标识符,代表了一幅大小为 x_size 和 y_size 的黑色图像。 imagecolorallocate — 为一幅图像分配颜色 int imagecolorallocate ( resource $image,int $red,int $green,int $blue ) imagecolorallocate() 返回一个标识符,代表了由给定的 RGB 成分组成的颜色。red,green 和 blue 分别是所需要的颜色的红,绿,蓝成分。这些参数是 0 到 255 的整数或者十六进制的 0x00 到 0xFF。imagecolorallocate()必须被调用以创建每一种用在 image 所代表的图像中的颜色。 imagefill — 区域填充 bool imagefill ( resource $image,int $x,int $y,int $color ) imagefill() 在 image图像的坐标 x,y(图像左上角为 0,0)处用 color颜色执行区域填充(即与 x,y 点颜色相同且相邻的点都会被填充)。 imagerectangle — 画一个矩形 bool imagerectangle ( resource $image,int $x1,int $y1,int $x2,int $y2,int $col ) imagerectangle() 用 col 颜色在 image 图像中画一个矩形,其左上角坐标为 x1,y1,右下角坐标为 x2,y2。图像的左上角坐标为 0,0。 imageline — 画一条线段 bool imageline ( resource $image,int $color ) imageline() 用 color颜色在图像 image 中从坐标 x1,y1 到 x2,y2(图像左上角为 0,0)画一条线段。 imagestring — 水平地画一行字符串 bool imagestring ( resource $image,int $font,string $s,int $col ) imagestring() 用 col颜色将字符串 s 画到 image所代表的图像的 x,y坐标处(这是字符串左上角坐标,整幅图像的左上角为 0,0)。如果 font 是 1,2,3,4 或 5,则使用内置字体。 imagepng — 以 PNG 格式将图像输出到浏览器或文件 imagepng() 将 GD 图像流(image)以 PNG 格式输出到标准输出(通常为浏览器),或者如果用 filename 给出了文件名则将其输出到该文件。 imagedestroy — 销毁一图像 imagedestroy() 释放与 image 关联的内存。 将源代码保存为code.php是个php文件,我们该如何使用他呢? imagepng已经将这个php文件输出成了png文件 直接调用就可以了
如果要使用验证码,记得开启session哦 希望本文所述对大家PHP程序设计有所帮助。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |