PHP高自定义性安全验证码代码

   2015-11-12 0
核心提示:根据网上的一个验证码修改。 自定义性非常强,需要的朋友可以参考下。
复制代码 代码如下:

<?php
public function captcha(){
$font_dir = $_SERVER ["DOCUMENT_ROOT"] . "your_ttf_file.ttf"; // 字体库
$img_w = 58; // 设置图片宽
$img_h = 20; // 设置图片高
$font_size = 11; // 字体大小
$angle_l = -10; // 左偏角
$angle_r = 10; // 右偏角
$code_str = "ABCDEFGHJKLMNPQRSTUVWXYZ36";
$word_len = 4; // 验证码位数
$padding = 5; // 每两个文字之间间隔
$margin = 2; // 左侧边距
$base_line = 15; // 文字基线位置
$base_line_offset = 2; // 基准线偏移量
$pixel_num = 3; // 杂点数目基数
$pixel_color= 8; // 杂点只有 $pixel_color 种颜色 总的杂点数为$pixel_num*$pixel_color
$noise_font_size = 1; // 杂点字体大小
$session_key= "my.xoyo_captcha"; //自定义session键名

header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Pragma: no-cache");
header("Cache-control: private");
header('Content-Type: image/png');

session_start();
$word = "";
$code_str_len = strlen($code_str) - 1;
for ($i = 0; $i < $word_len; $i++) {
$word.= $code_str[rand(0, $code_str_len)];
}
$_SESSION [$session_key] = strtolower($word);
$image = imagecreatetruecolor($img_w, $img_h);
imagefilledrectangle($image, 0, 0, $img_w - 1, $img_h - 1, imagecolorallocate($image, mt_rand(235, 255), mt_rand(235, 255), mt_rand(235, 255)));

//绘制杂点
for($i = 0; $i < $pixel_color; $i++){
$noise_color = imagecolorallocate( $image, mt_rand(150,225), mt_rand(150,225), mt_rand(150,225) );
for($j = 0; $j < $pixel_num; $j++) {
imagestring( $image, $noise_font_size, mt_rand(-10, $img_w), mt_rand(-10, $img_h), $code_str[mt_rand(0, $code_str_len)], $noise_color );
}
}

//绘制文字
for ($i = 0; $i < $word_len; ++$i) {
$color = imagecolorallocate($image, mt_rand(0, 100), mt_rand(20, 120), mt_rand(50, 150));
imagettftext($image, $font_size, mt_rand($angle_l, $angle_r), $margin, mt_rand($base_line-$base_line_offset, $base_line+$base_line_offset), $color, $font, mb_substr($word, $i, 1, 'utf-8'));
$margin += (imagefontwidth($font_size) + $padding);
}

imagepng($image);
imagedestroy($image);
exit;
}
 
标签: 验证码
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 这个Spring Security登录插件牛啊,验证码、小程序、OAuth2都能快速接入
    这个Spring Security登录插件牛啊,验证码、小
    上次我们把验证码登录、小程序登录优雅地集成到了Spring Security,很多同学大呼过瘾,相比较一些传统玩法高级了很多。胖哥就赶紧抓住机会举一反三,把几个非标准的OAuth2也接入了进来,主要是微信、企业微信,做到应接尽接。只需要通过下面几行简单的代码就
    02-09 java
  • Matlab神经网络验证码识别
    Matlab神经网络验证码识别
    本文,将会简述如何利用Matlab的强大功能,调用神经网络处理验证码的识别问题。 预备知识,Matlab基础编程,神经网络基础。 可以先看下:Matlab基础视频教程Matlab经典教程——从入门到精通神经网络入门验证码识别原理Matlab对图像读入处理,去掉噪声点和较
    02-09
  • ionic typescript--验证码发送倒计时功能
    1.新建页面ionic g page forget 2.mode.html文件ion-itemion-input clearInput [(ngModel)]='code' placeholder='请输入验证码'/ion-inputbutton clear ion-button class="i" item-end (tap)="getCode()" [disabled]="!verifyCode.disable&
    02-09
  • Nodejs简单验证码ccap安装 nodejs生成验证码
    首先要求:  node  npm安装时如果提示npm-gyp失败,可进行如下操作:确认python版本2.7+安装npm install ccap如果失败,尝试npm install ccap@0.5.3
    02-09
  • VB.NET验证码生成代码
    VB.NET验证码生成代码
    前台代码为:    asp:image id="Image2" runat="server" ImageUrl="ValidateCode.aspx"ValidateCode.aspx文件的代码为:        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase
    02-09
  • 教你用Python实现短信验证码的发送
    教你用Python实现短信验证码的发送
    目录1. 短信API平台2. 使用官方提供的SDK实现短信发送2.1 安装SDK2.2 使用官方的测试用例进行测试2.3 参数及其参数的查看3. 单例模式实现短信发送总结1. 短信API平台使用的短信API平台为:容联云(https://www.yuntongxun.com/)开发者文档:http://doc.yuntong
  • Python使用Cv2模块识别验证码的操作方法
    Python使用Cv2模块识别验证码的操作方法
    目录业务需求需求分析代码一结果分析 代码二代码模块结果呈现总结经验 参考文献业务需求        识别验证码图片中的数字信息,用python的图形表示出来了需求分析        使用Cv2模块、pytesseract模块进行操作。CV2是计算机建模识别的库,
  • asp.net mvc 短信验证码
    asp.net mvc 短信验证码
      把发短信功能写成一个类包,需要引用:SmsUtillity.cs:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Net;using System.IO;//到吉信通申请试用账号namespace ProcuracyRoom.Dll{public sealed class
    02-09
  • 用C#(asp.net)写出登录验证码! 用chatGPT
    /* Copyright all(c) 2005 ZhongFeng, http://blog.csdn.net/SW515 */ public class ValidateCode : System.Web.UI.Page {  private void Page_Load(object sender, System.EventArgs e)  {   this.CreateCheckCodeImage(GenerateCheckCode());  }
    02-09
  • ASP.net生成各种随机数字,用于优惠券、验证码
    北京网站建设-恒动时空将网上查到的资料收集整理如下:1、利用GUID生成全球唯一标识符,长度为32位,格式如:6F9619FF-8B86-D011-B42D-00C04FC964FF。    SQLSERVER本身可以生成,ASP.NET也可以生成。    最简单的如:GUID guid = Guid.newguid()2、
    02-09
点击排行