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 学習者の迅速な成長を支援します!