首頁 > php教程 > php手册 > 主體

php入门级的PHP验证码程序

WBOY
發布: 2016-05-25 16:49:14
原創
1046 人瀏覽過

生成验证码我们会要用到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
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!