169it科技资讯


当前位置:  编程技术>php

php验证码(附截图)

    来源: 互联网  发布时间:2014-10-13

本节内容:
php验证码一例。
 
代码说明:
自己导入字体,可以按照需要修改代码。

效果图:

例子:
 

代码示例:

<?php
/*
* php 验证码实例
* edit: www.
*/
class Imagecode{
private $width ;
private $height;
private $counts;
private $distrubcode;
private $fonturl;
private $session;
function __construct($width = 120,$height = 30,$counts = 5,$distrubcode="1235467890qwertyuipkjhgfdaszxcvbnm",$fonturl="C:\Windows\Fonts\TektonPro-BoldCond.otf"){
$this->width=$width;
$this->height=$height;
$this->counts=$counts;
$this->distrubcode=$distrubcode;
$this->fonturl=$fonturl;
$this->session=$this->sessioncode();
session_start();
$_SESSION['code']=$this->session;
}

 function imageout(){
$im=$this->createimagesource();
$this->setbackgroundcolor($im);
$this->set_code($im);
$this->setdistrubecode($im);
ImageGIF($im);
ImageDestroy($im);
}

private function createimagesource(){
return imagecreate($this->width,$this->height);
}
private function setbackgroundcolor($im){
$bgcolor = ImageColorAllocate($im, rand(200,255),rand(200,255),rand(200,255));//±3?°??é?
imagefill($im,0,0,$bgcolor);
}
private function setdistrubecode($im){
$count_h=$this->height;
$cou=floor($count_h*2);
for($i=0;$i<$cou;$i++){
$x=rand(0,$this->width);
$y=rand(0,$this->height);
$jiaodu=rand(0,360);
$fontsize=rand(8,15);
$fonturl=$this->fonturl;
$originalcode = $this->distrubcode;
$countdistrub = strlen($originalcode);
$dscode = $originalcode[rand(0,$countdistrub-1)];
$color = ImageColorAllocate($im, rand(40,140),rand(40,140),rand(40,140));
imagettftext($im,$fontsize,$jiaodu,$x,$y,$color,$fonturl,$dscode);

}
}
private function set_code($im){
$width=$this->width;
$counts=$this->counts;
$height=$this->height;
$scode=$this->session;
$y=floor($height/2)+floor($height/4);
$fontsize=rand(30,35);
$fonturl="C:\Windows\Fonts\AdobeGothicStd-Bold.otf";//$this->fonturl;

$counts=$this->counts;
for($i=0;$i<$counts;$i++){
$char=$scode[$i];
$x=floor($width/$counts)*$i+8;
$jiaodu=rand(-20,30);
$color = ImageColorAllocate($im,rand(0,50),rand(50,100),rand(100,140));
imagettftext($im,$fontsize,$jiaodu,$x,$y,$color,$fonturl,$char);
}
}
private function sessioncode(){
$originalcode = $this->distrubcode;
$countdistrub = strlen($originalcode);
$_dscode = "";
$counts=$this->counts;
for($j=0;$j<$counts;$j++){
$dscode = $originalcode[rand(0,$countdistrub-1)];
$_dscode.=$dscode;
}
return $_dscode;
}
}
Header("Content-type: image/GIF");
$imagecode=new  Imagecode(160,50);
$imagecode->imageout();


    
相关技术文章:
    ▪php数组长度的获取方法(三个实例)

     本节内容: php数组长度的获取方法 PHP中有两个内建的函数:count() 和sizeof(),可以得到数组的长度。 例1:   代码示例: <?php $colorList = array("apple"=>"red","grass"=>"green","sky"=>"blue","night"=>"black","wall"=>"white");   echo "Array size with count: ".count($colorList);  在php编程中,count统计数组里元素的个数; strlen是统计数组中元素的长度; 统计数组中所有元素的长度,使用数组循环即可。 例2:   代码示例: <?php $a=a......


    ▪php获取数组长度的方法举例

     本节内容: php数组长度的获取方法。 在php编程中,取得php数组长度的方法有很多,php提供了两个函数可以计算一维数组长度,如count、sizeof都可以直接统计数组长度。 有时,也需要获取二维数组的长度。 来看几个实例。 php如何获取数组的长度,使用php函数count(),或sizeof()。 例如:   代码示例: <?php $arr = Array('0','1','2','3','4'); echo count($arr); // 输出 5 // www. $arr = array('A','B','C'); echo sizeof($arr); //输出3 sizeof()和count()殊途同归,这两个函数都可以返回数......


    ▪判断php数组维度(php数组长度)的方法

     本节内容: php数组维度的判断方法 例子,判断php数组维度。   代码示例: <?php /**  * 返回数组的维度  * @param  [type] $arr [description]  * @return [type]      [description]  */ www. function arrayLevel($arr){     $al = array(0);     function aL($arr,&$al,$level=0){         if(is_array($arr)){             $level++;             $al[] = $level;             foreach($arr as $v){                 aL($v,$al,$level);             }         }     }  ......


 
最新技术文章:
    ▪PHP函数microtime()时间戳的定义与用法

     本节内容: PHP函数microtime() 定义和用法 microtime()返回当前 Unix 时间戳和微秒数。 microtime()语法 microtime(get_as_float) microtime()参数与描述 get_as_float 如果给出了 get_as_float 参数并且其值等价于 TRUE,该函数将返回一个浮点数。 说明 microtime()仅在支持 gettimeofday() 系统调用的操作系统下可用。 如果调用时不带可选参数,本函数以 "msec sec" 的格式返回一个字符串,其中 sec 是自 Unix 纪元(0:00:00 January 1, 1970 GMT)起到现在的秒数,msec 是微秒部分。字符串的两部分都是以秒为单位返回的。 例子:   代码示例......


    ▪PHP单一入口之apache配置内容

     本节内容: PHP单一入口 在apache配置文件httpd.conf加入,去掉LoadModule rewrite_module modules/mod_rewrite.so前面的“#”号。 内容:   代码示例: DocumentRoot / <Directory />     Options Indexes FollowSymLinks MultiViews     AllowOverride None     #AllowOverride All <IfModule mod_rewrite.c>   RewriteEngine on   RewriteBase /   #不显示index.php   RewriteCond %{REQUEST_FILENAME} !-d   RewriteCond %{REQUEST_FILENAME} !-f   RewriteRule  ^/?(.*)$ /index.php?%{QUERY_STRING} [L,NC]   #RewriteRule ^(.*)$ index.php?$1 [QSA,L]  </IfM......


    ▪PHP数组排序方法总结(收藏)

     本节内容: 快速创建数组的函数range()和常见PHP数组排序的方法。   本文主要介绍php数组排序、降序的排序相关的内容。   sort:本函数为 array 中的单元赋予新的键名。这将删除原有的键名而不仅是重新排序。 rsort:本函数对数组进行逆向排序(最高到最低)。 删除原有的键名而不仅是重新排序。 asort:对数组进行排序并保持索引关系 arsort:对数组进行逆向排序并保持索引关系 ksort:对数组按照键名排序,保留键名到数据的关联 krsort:对数组按照键名逆向排序,保留键名到数据的关联 natsort:对字母数字......


 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2017,169IT.COM,E-mail:www_169it_com#163.com(请将#改为@)

浙ICP备11055608号