> php教程 > php手册 > 본문

php入门级的PHP验证码程序

WBOY
풀어 주다: 2016-05-25 16:49:14
원래의
1073명이 탐색했습니다.

生成验证码我们会要用到php 图形处理函数,如imagecreate,imagepng,header之类的函数,下面我们一起来看个简单的实例。

实例代码如下:

<?php
session_start();
$im = imagecreate(80, 30); //创建图片
$color = imagecolorallocate($im, rand(150, 200) , rand(150, 200) , rand(150, 200)); //设置图片背景
$str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789"; //产生随机字符串
for ($i = 0; $i < 5; $i++) {
    $code.= $str[rand(0, (strlen($str) - 1)) ];
}
$_SESSION[&#39;code&#39;] = $code;
for ($a = 0; $a < 5; $a++) { //将字符串写入图片资源
    $x = $a * 10 + 15;
    $y = rand(5, 10); // www.111cn.net
    imagechar($im, 5, $x, $y, $code{$a}, imagecolorallocate($im, 0, 0, 0));
}
header("Content-type:image/png"); //输出图片资源
imagepng($im);
?>
로그인 후 복사

例2代码如下:

<?php
if (!isset($_SESSION)) { //判断session是否开启
    session_start(); //开启就session
    
}
$width = 70; //布画宽度
$height = 25; //布画高度
$length = 4; //验证码长度
$code = getcode($length); //获取随机字符串
$_SESSION[&#39;verfyCode&#39;] = $code;
$img = imagecreate($width, $height);
$bgcolor = imagecolorallocate($img, 240, 240, 240);
$rectangelcolor = imagecolorallocate($img, 150, 150, 150);
imagerectangle($img, 1, 1, $width - 1, $height - 1, $rectangelcolor); //画边框
for ($i = 0; $i < $length; $i++) { //循环写字
    $codecolor = imagecolorallocate($img, mt_rand(50, 200) , mt_rand(50, 128) , mt_rand(50, 200));
    $angle = rand(-20, 20);
    $charx = $i * 15 + 8;
    $chary = ($height + 14) / 2 + rand(-1, 1);
    imagettftext($img, 15, $angle, $charx, $chary, $codecolor, &#39;C:WINDOWSFontsSIMKAI.TTF&#39;, $code[$i]);
}
for ($i = 0; $i < 20; $i++) { //循环画线
    $linecolor = imagecolorallocate($img, mt_rand(0, 250) , mt_rand(0, 250) , mt_rand(0, 250));
    $linex = mt_rand(1, $width - 1);
    $liney = mt_rand(1, $height - 1);
    imageline($img, $linex, $liney, $linex + mt_rand(0, 4) - 2, $liney + mt_rand(0, 4) - 2, $linecolor);
}
for ($i = 0; $i < 100; $i++) { //循环画点
    $pointcolor = imagecolorallocate($img, mt_rand(0, 250) , mt_rand(0, 250) , mt_rand(0, 250));
    imagesetpixel($img, mt_rand(1, $width - 1) , mt_rand(1, $height - 1) , $pointcolor);
}
function getcode($length) { //生成php随机数
    $pattern = &#39;1234567890ABCDEFGHIJKLOMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz &#39;; //字符池
    for ($i = 0; $i < $length; $i++) {
        $key.= $pattern{mt_rand(0, 35) };
    }
    return $key;
}
ob_clean();
header(&#39;Content-type:image/png&#39;);
imagepng($img);
?>
로그인 후 복사


本文地址:

转载随意,但请附上文章地址:-)

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿