php基础练习--简单验证码实现_实用技巧

复制代码 代码如下:

<?php
    /**
    *  vcode
    *  param   $w画布宽
    *  param   $h 画布高
    *  param   $fnum 验证码元素个数
    *  param   $fontsize 验证码元素大小
    *  param   $obs  干扰素个数
    */

    function vcode($w, $h, $fnum, $fontsize, $obs) {
    $img = imagecreatetruecolor($w,  $h);

    $white = imagecolorallocate($img, 255, 255, 255);
    $black = imagecolorallocate($img, 0 , 0, 0);
    $gray = imagecolorallocate($img, 180, 180, 180);

    imagefill($img, 0, 0, $gray);

    for ($i=0; $i < $obs; $i++) {
        imagesetpixel($img, rand(0, $w), rand(0, $h), $black);
    }

    $x = ($w - $fnum * $fontsize) / 2;
    $y = $h / 2 + $fontsize / 2;
    $fontfile = "final/fonts/msyh.ttf";
    $arr = array_merge(range(0,9), range('a', 'z'), range('A', 'Z'));
    shuffle($arr);
    $str=implode(array_slice($arr, 0, $fnum));
    imagettftext($img, $fontsize, 0, $x, $y, $black, $fontfile, $str);

    header("content-type:image/jpeg");
    imagejpeg($img);

    imagedestroy($img);
}

    vcode(80, 40, 4, 15, 1000);           

运行效果图:

通过这个基础练习,学习到了简单的处理问题的方法,满足目标的要求,不要盲目的敲代码。

比如这个验证码,其核心是imagettftext()函数,围绕这个函数来展开验证码的设计。

注意:range()函数的运用,参数如果是字符的话,要用单引号或双引号,否则header头会认为是有输出。

时间: 2024-10-24 04:33:12

php基础练习--简单验证码实现_实用技巧的相关文章

封装的一个asp.net验证码类_实用技巧

第一个反映是验证码的这些属性是否可以设置(也就是说是封装成一个类,然后以暴露公有属性和方法的方式来使用的,还是在直接在一般处理程序中实现了验证码的生成到输出),结果比较可惜,是后者...... 里面的算法感觉挺不错,至少对于我这种对算法几乎是不懂的人来说是这样,于是想到去封装一下她然后无耻地纳入自己的类库中去^^ old原文件如下:点击下载 首先分析一下这份代码中的不足(自己觉得的): 1.面向过程式的编程,如果要修改验证码的属性,例如修改字体的大小.背景颜色等细节的东西,需要去一般处理程序中找

ASP.NET MVC小结之基础篇(一)_实用技巧

前言:前几天要准备一个演讲,所以准备了MVC的一些基本的东西,以前也使用过MVC,但是只是使用,而不是去了解,所以趁着这个机会好好的把别人的MVC视频看了一下(是一个微软的MVP会员发布的视频,相信有些人都看过),整理除了这个笔记,共享一下子,基本MVC的所有东西都介绍了,但是都是很基础的东西.本来打算一篇发表完的,但是发现东西有点多,所以分成了两篇文章! 什么是ASP.NET MVC (1) ASP.NET MVC是微软官方提供的MVC模式编写ASP.NET Web应用程序的一个框架 (2)M

.NET基础之自定义泛型分析_实用技巧

本文实例分析了.NET基础之自定义泛型.分享给大家供大家参考.具体分析如下: 在.NET中泛型使用非常频繁,在控制台应用程序中,默认的引入了System.Collection.Generics名称空间,其中就提供了我们经常使用的泛型:List<T>和Dictionary<T>,相信用过它们的都知道它们的强大.还有一种我们经常使用的简单的泛型:System.Nullable<T>,即可空类型.我们可以:   System.Nullable<int> nulla

MVC+EasyUI+三层架构简单权限管理系统_实用技巧

闲来无事把以前做的一个项目整理了一下,今天拿出来跟大家分享,交流和探讨.希望大家多多指正. 一.项目架构图 其中Entity为模型实体层类库:DAL为数据访问层类库,主要负责数据库操作:BLL为业务逻辑类库,Common为公共帮助类库,WebUI为用户层. 非Web层的所有实体类模板都已在项目中创建好,直接用动软生成就可以了. 二.数据库相关表 数据库文件放在web层的DB目录中 三.功能界面 *整个项目的样式都采用的是easyui自带的bootstrap样式.项目中涉及到的相关js验证规则,都

ASP.NET MVC小结之基础篇(二)_实用技巧

整理除了这个笔记,共享一下子,基本MVC的所有东西都介绍了,但是都是很基础的东西.本来打算一篇发表完的,但是发现东西有点多,所以分成了两篇文章,这是最后一篇了! 1.ASP.NET MVC请求过程 1 2.Controller (1) 控制器在ASP.NET MVC中扮演着处理客户端请求的角色 1)必须实现System.Web.Mvc.IController接口 ->通常直接继承System.Web.MVC.Controller类 2)必须要以Controller结尾 3)通过不同的Action

asp.net实现简单分页实例_实用技巧

本文实例讲述了asp.net实现简单分页的方法.分享给大家供大家参考. 具体实现方法如下: 复制代码 代码如下: /// <summary> /// 分页内容 /// </summary> /// <param name="size">页面大小</param> /// <param name="count">页面数量</param> /// <param name="curren

asp.net 身份验证(最简单篇)_实用技巧

一般来说,网站的身份验证方式都会经过以下几个步骤: 1.输入用户名和密码,单击确定按钮. 2.在后台判断用户名和密码是否正确,如果错误返回提示:如果正确,进入可访问的页面. 在ASP时代,通常都会在验证用户名和密码是否匹配之后,创建一个Session,然后在每个需要验证的页面中判断Session是否存在,如果存在,则显示页面内容:如果不存在,产生提示,并跳转到登录页面. 但是,在asp.net时代,这个过程就给大大的减化了,不再需要在每个需要验证的页面中去校验Session,只需要进行如下几步,

asp.net中的窗体身份验证(最简单篇)_实用技巧

在创建网站中,常常会使用到身份验证.asp.net中内置了几种身份验证的方式,如Windows.Froms.Passport等.这几种身份验证的方式各有不同.一般来说,网站的身份验证方式都会经过以下几个步骤: 1.输入用户名和密码,单击确定按钮. 2.在后台判断用户名和密码是否正确,如果错误返回提示:如果正确,进入可访问的页面.  在ASP时代,通常都会在验证用户名和密码是否匹配之后,创建一个Session,然后在每个需要验证的页面中判断Session是否存在,如果存在,则显示页面内容:如果不存

浅析.net简单工厂模式_实用技巧

编程时一门技术,更是一门艺术 简单工厂模式利用面向对象方式通过继承.封装.多态把程序的耦合度降低,设计模式使得程序更加灵活,容易修改,易于复用. 下面是服务器计算器代码: 复制代码 代码如下:  using System;  using System.Collections.Generic;  using System.Linq;  using System.Text;  using System.Threading.Tasks;  namespace DesignModel  {      /