//验证码

<?php
//实现简单的验证码 //session_start
session_start();
//画布
$image = imagecreatetruecolor(100, 30);
//设置填充颜色
$bgcolor = imagecolorallocate($image, 255, 255, 255);
//填充
imagefill($image, 0, 0, $bgcolor); //随机数据
//session
$captcha_code = '';
for ($i = 0; $i < 4; $i++) {
$fontsize = 5;
$fontcolor = imagecolorallocate($image, mt_rand(0, 120), mt_rand(0, 120), mt_rand(0, 120));
$data = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
// echo strlen($data);
// echo substr($data,61,1);
$font = substr($data, mt_rand(0, strlen($data) - 1), 1);
$captcha_code .= $font;
$width = ($i * 100) / 4 + mt_rand(5, 10);
$height = mt_rand(5, 10);
//添加
imagestring($image, $fontsize, $width, $height, $font, $fontcolor);
}
//保存到session
$_SESSION['authcode'] = $captcha_code;
//干扰
//像素点
for ($i = 0; $i < 200; $i++) {
$pixcolor = imagecolorallocate($image, mt_rand(20, 200), mt_rand(20, 200), mt_rand(20, 200));
imagesetpixel($image, mt_rand(0, 99), mt_rand(0, 29), $pixcolor);
} //线
for ($i = 0; $i < 4; $i++) {
$linecolor = imagecolorallocate($image, mt_rand(50, 220), mt_rand(50, 220), mt_rand(50, 220));
imageline($image, mt_rand(0, 99), mt_rand(0, 29), mt_rand(0, 99), mt_rand(0, 99), $linecolor);
}
//输出
header('Content-type: image/png');
imagepng($image);
//销毁
imagedestroy($image);

//验证表单

<?php
if (isset($_REQUEST['authcode'])) {
session_start();
//判断
if (strtolower($_REQUEST['authcode'] == strtolower($_SESSION['authcode']))) {
echo '恭喜你输入正确!';
} else {
echo '输入失败!';
}
exit();
}
?>
<html>
<head>
<title>验证码提交</title>
</head>
<body>
<form action="./form.php" method="post">
<p>验证码:<img src="./code01.php" id="captcha_img" alt="验证码" width="100" height="30" border="1px"></p>
<a href="javascript:void(0)" onclick="document.getElementById('captcha_img').src='./code01.php?r='+Math.random()">看不清?</a>
<p>
<label for="authcode">请输入图片中的内容: </label>
<input type="text" name="authcode" id="authcode"/>
</p> <p><input type="submit" value="submit"/></p>
</form>
</body>
</html>

php 字母和数字验证码的更多相关文章

  1. JavaScript 编写随机四位数验证码(大小写字母和数字)

    1.JavaScript编写随机四位数验证码,用到的知识点为: a.Math对象的随机数:Math.random() b.Math对象的取整    :Math.floor() c.处理所需要的下标个数 ...

  2. 字母数字、字母、汉字验证码 (java)

    原文:http://blog.csdn.net/qh_java/article/details/49854477 一.字母数字,字母,汉字验证码的生成代码 1.字母数字验证码: package com ...

  3. 务必收藏备用:.net core中通过Json或直接获取图形验证码(数字验证码、字母验证码、混合验证码),有源代码全实战demo(开源代码.net core3.0)

    很多人写的博客大家看了会一知半解,不知道怎么用,应该引用什么类库或者代码不全,这样很多小白很是头疼,尤其是尝新技术更是如此.我们这边不止告诉你步骤,而且还提供开源demo.随着时间的推移,我们的dem ...

  4. 绘制字母和数字组合的验证码(原生php)

    <?php $font = array('font/FZZQJW.TTF','font/STHUPO.TTF');//字体 $str = '689acdefhjkmnpqrtuvwxyACDEF ...

  5. java中获取字母和数字的组合

    package com.ccytsoft.wkc.util; import java.util.ArrayList; import java.util.List; import java.util.R ...

  6. Python 过滤字母和数字

    [前言]在写爬虫时,正则表达式有时候比较难写,一个是自己不熟练,二者数据分析提取数据千奇百怪. 一.好在python有个re模块,提供了很多更加简便的方法:可参考此文档:https://www.cnb ...

  7. 随机生成长度为len的密码,且包括大写、小写英文字母和数字

    一道华三面试题,随机生成长度为len的密码,且包括大写.小写英文字母和数字,主要Random类的使用,random.nextInt(len)表示生成[0,len)整数.具体实现见下面代码,已经很详细了 ...

  8. C语言习题1.分别统计一下其中字母,数字,其他字符的个数。将统计的字母,数字,其他字符的个数以柱状图的形式打印

    从键盘上输入字符,(1)分别统计一下其中字母,数字,其他字符的个数, (2)将统计的字母,数字,其他字符的个数以柱状图的形式打印.例如 5 ***** *****     3 *****   **** ...

  9. Java中过滤出字母、数字和中文的正则表达式

    1.Java中过滤出字母.数字和中文的正则表达式 (1)过滤出字母的正则表达式 [^(A-Za-z)] (2)过滤出数字的正则表达式 [^(0-9)] (3)过滤出中文的正则表达式 [^(\\u4e0 ...

随机推荐

  1. Python处理验证码第一篇(pytesser初探及报错处理)

    (原文链接:http://blog.csdn.net/Bone_ACE/article/details/50436587) 前言: 春节期间,无法全身心投入地去写爬虫,那就玩玩验证码吧,应该比较有趣! ...

  2. Laravel 项目开发规范

    参考:https://fsdhub.com/books/laravel-specification

  3. unity, List namespace

    如果要使用List,需要using System.Collections.Generic;

  4. CentOS6.6+Puppet3.7.4分布式部署Nagios监控系统

    测试框架 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 CentOS-6.6-x86_64(minimal)   puppet-3.7 ...

  5. Redis 5种数据类型,2种特殊数据处理策略

    5种数据类型 String [html] view plaincopy 1.String   经常使用命令:   除了get.set.incr.decr mget等操作外,Redis还提供了下面一些操 ...

  6. DB2字符处理函数

    转自:http://www.blogjava.net/bingle/archive/2007/07/11/129681.html ----------------------------------- ...

  7. ado连接sql server

    //ado连接sql server //头文件加上以下这句. #import "C:\Windows\system\msado15.dll" no_namespace rename ...

  8. SYN攻击防护措施

    SYN攻击的应对措施 针对SYN攻击的几个环节.提出对应的处理方法: 方式1:降低SYN-ACK数据包的重发次数(默认是5次): sysctl -w net.ipv4.tcp_synack_retri ...

  9. 清理iOS中的“其他”空间垃圾文件

    关于如何清理 iOS 里的"其他"空间的教程,网上搜索那是一大堆,不过都是对于2010年某坛某篇"技术文"的无数次简单复制粘帖,可行性已经被各路尝试者们踩到了地 ...

  10. java printf long

    System.out.printf("%d\n", 1000000000000000000L);