php中文字母数字验证码实现代码


Posted in PHP onApril 25, 2008

英文同数字
<?php
Header("Content-type:image/png");
//定义header,声明图片文件,最好是png,无版权之扰; 
//生成新的四位整数验证码
session_start();//开启session;
$authnum_session = ''; 
$str = 'abcdefghijkmnpqrstuvwxyz1234567890'; 
//定义用来显示在图片上的数字和字母;
$l = strlen($str); //得到字串的长度; 
//循环随机抽取四位前面定义的字母和数字; 
for($i=1;$i<=4;$i++)

$num=rand(0,$l-1); 
//每次随机抽取一位数字;从第一个字到该字串最大长度,
//减1是因为截取字符是从0开始起算;这样34字符任意都有可能排在其中;
$authnum_session.= $str[$num]; 
//将通过数字得来的字符连起来一共是四位;
}
session_register("authnum_session");
//用session来做验证也不错;注册session,名称为authnum_session,
//其它页面只要包含了该图片
//即可以通过$_SESSION["authnum_session"]来调用

//生成验证码图片,
srand((double)microtime()*1000000);
$im = imagecreate(50,20);//图片宽与高; 
//主要用到黑白灰三种色;
$black = ImageColorAllocate($im, 0,0,0);
$white = ImageColorAllocate($im, 255,255,255);
$gray = ImageColorAllocate($im, 200,200,200); 
//将四位整数验证码绘入图片
imagefill($im,68,30,$gray);
//如不用干扰线,注释就行了;
$li = ImageColorAllocate($im, 220,220,220);
for($i=0;$i<3;$i++) 
{//加入3条干扰线;也可以不要;视情况而定,因为可能影响用户输入; 
imageline($im,rand(0,30),rand(0,21),rand(20,40),rand(0,21),$li);

//字符在图片的位置;
imagestring($im, 5, 8, 2, $authnum_session, $white);
for($i=0;$i<90;$i++)
{//加入干扰象素
imagesetpixel($im, rand()%70 , rand()%30 , $gray);
}
ImagePNG($im);
ImageDestroy($im);
?> 

中文

<?php    
/*    
* 文件:code.php    
* 作用:验证码生成    
*/    
session_start();
// 设置 content-type    
header("Content-type: image/png");    
// 创建图片    
$im = imagecreatetruecolor(120, 30);     
$ChineseChar = array("人","出","来","友","学","孝","仁","义","礼","廉","忠","国","中","易","白","者","火 ","土","金","木","雷","风","龙","虎","天","地",  
"生","晕","菜","鸟","田","三","百","钱","福 ","爱","情","兽","虫","鱼","九","网","新","度","哎","唉","啊","哦","仪","老","少","日",  
"月 ","星");    
// 创建颜色    
$fontcolor = imagecolorallocate($im, 255, 255, 255);    
$bg = imagecolorallocate($im, 0, 0, 0);    

// 设置文字    
for($i=0;$i<4;$i++) $text .= $ChineseChar[(array_rand($ChineseChar))];    

$_SESSION['code'] = $text;

// 设置字体  [url]http://www.font.com.cn/downlist/s_12_3.html[/url] 有_GBK系列的字体下载,一般GD库都支持的!
$font = 'gbk.ttf';

// 添加文字    
imagettftext($im, 18, 0, 11, 21, $fontcolor, $font, iconv("GB2312","UTF-8",$text));    

// 输出图片    
imagepng($im);    
imagedestroy($im);    
?>

PHP 相关文章推荐
从MySQL数据库表中取出随机数据的代码
Sep 05 PHP
Snoopy类使用小例子
Apr 15 PHP
php利用header函数实现文件下载时直接提示保存
Nov 12 PHP
深入PHP autoload机制的详解
Jun 09 PHP
php实现统计邮件大小的方法
Aug 06 PHP
PHP防止表单重复提交的几种常用方法汇总
Aug 19 PHP
php计算给定时间之前的函数用法实例
Apr 03 PHP
PHP实现在线阅读PDF文件的方法
Jun 17 PHP
Zend Framework实现多服务器共享SESSION数据的方法
Mar 22 PHP
PHP获取redis里不存在的6位随机数应用示例【设置24小时过时】
Jun 07 PHP
Laravel给生产环境添加监听事件(SQL日志监听)
Jun 19 PHP
详解php用static方法的原因
Sep 12 PHP
Ajax PHP简单入门教程代码
Apr 25 #PHP
PHP开发框架总结收藏
Apr 24 #PHP
php5数字型字符串加解密代码
Apr 24 #PHP
php实现的简单压缩英文字符串的代码
Apr 24 #PHP
php格式化工具Beautify PHP小小BUG
Apr 24 #PHP
使用PHP的日期与时间函数技巧
Apr 24 #PHP
追求程序速度,而不是编程的速度
Apr 23 #PHP
You might like
用PHP调用Oracle存储过程的方法
2008/09/12 PHP
php数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
PHP中set_include_path()函数相关用法分析
2016/07/18 PHP
懒就要懒到底——鼠标自动点击(含时间判断)
2007/02/20 Javascript
jQuery针对各类元素操作基础教程
2014/08/29 Javascript
举例详解JavaScript中Promise的使用
2015/06/24 Javascript
javascript中$(function() {});写与不写有哪些区别
2015/08/10 Javascript
AngularJS实现一次监听多个值发生的变化
2016/08/31 Javascript
详解vue-router2.0动态路由获取参数
2017/06/14 Javascript
vue.js 使用axios实现下载功能的示例
2018/03/05 Javascript
js实现双色球效果
2020/08/02 Javascript
Python使用xlrd读取Excel格式文件的方法
2015/03/10 Python
通过数据库对Django进行删除字段和删除模型的操作
2015/07/21 Python
Python实现图片转字符画的示例
2017/08/22 Python
python如何在循环引用中管理内存
2018/03/20 Python
基于Python实现迪杰斯特拉和弗洛伊德算法
2020/05/27 Python
python 实现GUI(图形用户界面)编程详解
2019/07/17 Python
python实现对图片进行旋转,放缩,裁剪的功能
2019/08/07 Python
利用Python实现kNN算法的代码
2019/08/16 Python
Pytest单元测试框架如何实现参数化
2020/09/05 Python
Python 实现PS滤镜中的径向模糊特效
2020/12/03 Python
HTML5等待加载动画效果
2017/07/27 HTML / CSS
使用jquery实现HTML5响应式导航菜单教程
2014/04/02 HTML / CSS
百度JavaScript笔试题
2015/01/15 面试题
制定岗位职责的原则
2013/11/08 职场文书
国家助学金获奖感言
2014/01/31 职场文书
文案策划求职信
2014/03/18 职场文书
党支部活动策划方案
2014/08/18 职场文书
法学专业大学生实习自我鉴定
2014/10/05 职场文书
2015元旦联欢晚会结束语
2014/12/14 职场文书
先进个人总结范文
2015/02/15 职场文书
起诉意见书范文
2015/05/19 职场文书
创业者如何撰写出一份打动投资人的商业计划书?
2019/07/02 职场文书
Go语言带缓冲的通道实现
2021/04/26 Golang
MySQL创建表操作命令分享
2022/03/25 MySQL
MySQL 原理优化之Group By的优化技巧
2022/08/14 MySQL