一漂亮的PHP图片验证码实例

 在网上看到一个图片验证码,挻漂亮的,但是取回来发现,好像有点小问题,还是改为自己的口味吧,很多时候,如果无法使用,应该是字体的问题。程序所用的字体win7 自带的,需要上传到web目录

一、显示效果
 
二、代码如下
 
 代码如下:/*
 *  @Author fy
 */
 
$imgwidth =100; //图片宽度
$imgheight =40; //图片高度
$codelen =4; //验证码长度
$fontsize =20; //字体大小
$charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';
$font = 'Fonts/segoesc.ttf';
 
$im=imagecreatetruecolor($imgwidth,$imgheight);
 
$while=imageColorAllocate($im,255,255,255);
imagefill($im,0,0,$while); //填充图像
 
//取得字符串
$authstr='';
$_len = strlen($charset)-1;
for ($i=0;$i<$codelen;$i++) {
 $authstr .= $charset[mt_rand(0,$_len)];
}
 
session_start();
$_SESSION['scode']=strtolower($authstr);//全部转为小写,主要是为了不区分大小写
 
//随机画点,已经改为划星星了
for ($i=0;$i<$imgwidth;$i++){
    $randcolor=imageColorallocate($im,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
 imagestring($im,mt_rand(1,5), mt_rand(0,$imgwidth),mt_rand(0,$imgheight), '*',$randcolor);
    //imagesetpixel($im,mt_rand(0,$imgwidth),mt_rand(0,$imgheight),$randcolor);
}
//随机画线,线条数量=字符数量(随便)
for($i=0;$i<$codelen;$i++) 
{  
 $randcolor=imagecolorallocate($im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
 imageline($im,0,mt_rand(0,$imgheight),$imgwidth,mt_rand(0,$imgheight),$randcolor); 

 
$_x=intval($imgwidth/$codelen); //计算字符距离
$_y=intval($imgheight*0.7); //字符显示在图片70%的位置
for($i=0;$i<strlen($authstr);$i++){
 
 $randcolor=imagecolorallocate($im,mt_rand(0,150),mt_rand(0,150),mt_rand(0,150));
 //imagestring($im,5,$j,5,$imgstr[$i],$color3);
 // imagettftext ( resource $image , float $size , float $angle , int $x , int $y , int $color , string $fontfile , string $text )
 imagettftext($im,$fontsize,mt_rand(-30,30),$i*$_x+3,$_y,$randcolor,$font,$authstr[$i]);
 
}
 
//生成图像
header("content-type:image/PNG");
imagePNG($im);
imageDestroy($im);

时间: 2024-08-29 14:29:45

一漂亮的PHP图片验证码实例的相关文章

PHP编写的图片验证码类文件分享_php实例

适用于自定义的验证码类! <?php /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ Class Image{ private $img; public $width = 85; pub

ThinkPHP3.2.1图片验证码实现方法_php实例

本文实例讲述了ThinkPHP3.2.1图片验证码实现方法.分享给大家供大家参考,具体如下: 今天用到图片验证码的功能,在网上找到ThinkPHP的以下代码: Public function verify(){ import('think.Image'); Image::buildImageVerify(); } 添加到Controller中,通过地址"http://localhost/index.php/passport/index/verify"来访问,却提示以下错误: Class

PHP验证码例子(带刷新)DEMO_PHP图片验证码类实例

直接引入该类文件并创建该类的实例.就可以使用验证码了,验证码类文件vcode.class.php代码如下 //验证码类 class Vcode{ private $width;//图片宽度 private $height;//图片高度 private $num;//验证码个数 private $img;//图片资源 private $code;//验证码 private $pointNum;//干扰点个数 private $lineNum;//干扰线个数 private $fontFile;//

PHP使用GIFEncoder类生成的GIF动态图片验证码_php实例

相信很多人都想过如何用PHP生成GIF动画来实现动态图片验证码,以下是实现过程. ImageCode函数通过GIFEncoder类实现的GIF动画的PHP源代码,有兴趣的朋友可以研究一下. 效果如图: 复制代码 代码如下: /**   * ImageCode 生成GIF图片验证   * @param $string 字符串   * @param $width 宽度   * @param $height 高度   * */   function ImageCode($string = '', $w

PHP生成Gif图片验证码_php实例

先看效果图  字体及字体文件的路径需要在类中$FontFilePath及$FontFileName中设置.如: 复制代码 代码如下: private static $FontFilePath = "static/font/"; //相对地本代码文件的位置private static $FontFileName = array("3.ttf");// array("1.ttf", "2.ttf", "3.ttf&quo

PHP实现算式验证码和汉字验证码实例

 这篇文章主要介绍了PHP实现算式验证码和汉字验证码实例,本文直接给出实现代码,需要的朋友可以参考下     在PHP网站开发中,验证码可以有效地保护我们的表单不被恶意提交,但是如果不使用算式验证码或者汉字验证码,仅仅使用简单的字母或者数字验证码,这样的验证码方案真的安全吗? 大家知道简单数字或者字母验证码很容易被破解,但是算式验证码或者中文汉字验证码不容易被破解,所以建议大家在使用验证码的时候,尽量用算式验证码或者中文汉字验证码. 下面是我写的两种验证码代码,有用到的朋友可以参考下: 1.算式

AJAX+jsp无刷新验证码实例

我们在做验证码的时候往往由于要反作弊,验证有时故意加入多的干扰因素,这时验证码显示不很清楚,用户经常输入错误.这样不但要重新刷新页面,导致用户没有看清楚验证码而重填而不是修改,而且如果没有用session保存下用户输入的其它数据的话(如姓名),用户刚刚输入的内容也不存在了,这样给用户造成不好的体验. 本例在原有验证方式基础之上增加一段js,通过xmlhttp来获取返回值,以此来验证是否有效,这样即使用户浏览器不支持js,也不会影响他的正常使用了. 为了防止作弊,当用户连接3次输入错误时则重载一下

java生成图片验证码实例代码_java

关于java图片验证码的文章最近更新了不少,帮助大家掌握java验证码的生成技术,下文为大家分享了java生成图片验证码最简单的方法,供大家参考. 现在各行业在定制系统时都会考虑到机器注册,现在最有效的方式就是输入验证.现在的验证方式有很多种: 一.问题验证,其实也是图片验证,在图片上生成问题,然后输入框输入答案. 二.图片验证,输入图片上展示的文字信息. 三.短信验证,比较繁杂,用户也不怎么喜欢. 四.还有就是百度最新的验证方式.图片上生成文字,然后出现一个文字点击框,选择你在验证图片上看到的

python图片验证码生成代码_python

本文实例为大家分享了python图片验证码实现代码,供大家参考,具体内容如下 #!/usr/bin/env python # -*- coding: UTF-8 -*- import random from PIL import Image, ImageDraw, ImageFont, ImageFilter try: import cStringIO as StringIO except ImportError: import StringIO _letter_cases = "abcdefg