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 相关文章推荐
用在PHP里的JS打印函数
Oct 09 PHP
PHPlet在Windows下的安装
Oct 09 PHP
PHP与javascript的两种交互方式
Oct 09 PHP
Mysql中limit的用法方法详解与注意事项
Apr 19 PHP
怎么在Windows系统中搭建php环境
Aug 31 PHP
PHP获取文件的MD5值并判断是否被修改的例子
Jun 19 PHP
windows的文件系统机制引发的PHP路径爆破问题分析
Jul 28 PHP
php去掉文件前几行的方法
Jul 29 PHP
Laravel中前端js上传图片到七牛云的示例代码
Sep 04 PHP
yii2中LinkPager增加总页数和总记录数的实例
Aug 28 PHP
php集成开发环境详解
Sep 24 PHP
laravel 解决paginate查询多个字段报错的问题
Oct 22 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
Discuz 6.0+ 批量注册用户名
2009/09/13 PHP
PHP统计目录大小的自定义函数分享
2014/11/18 PHP
Javascript常考语句107条收集
2010/03/09 Javascript
简短几句 通俗解释javascript的闭包
2011/01/17 Javascript
JavaScript内核之基本概念
2011/10/21 Javascript
jQuery源码分析-03构造jQuery对象-工具函数
2011/11/14 Javascript
IE8中使用javascript动态加载CSS的解决方法
2014/06/17 Javascript
window.setInterval()方法的定义和用法及offsetLeft与style.left的区别
2015/11/11 Javascript
JavaScript截取指定长度字符串点击可以展开全部代码
2015/12/04 Javascript
JQuery实现的按钮倒计时效果
2015/12/23 Javascript
用window.onerror捕获并上报Js错误的方法
2016/01/27 Javascript
编写高质量JavaScript代码的基本要点
2016/03/02 Javascript
JS实现控制图片显示大小的方法【图片等比例缩放功能】
2017/02/18 Javascript
vue实现通讯录功能
2018/07/14 Javascript
Node如何后台数据库使用增删改查功能
2019/11/21 Javascript
JS面向对象编程实现的Tab选项卡案例详解
2020/03/03 Javascript
vue使用echarts图表自适应的几种解决方案
2020/12/04 Vue.js
[37:02]OG vs INfamous 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python常用模块用法分析
2014/09/08 Python
在Python的Flask框架下收发电子邮件的教程
2015/04/21 Python
python基于itchat实现微信群消息同步机器人
2017/02/27 Python
Python并发编程协程(Coroutine)之Gevent详解
2017/12/27 Python
详解Python中的测试工具
2019/06/09 Python
Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
2019/07/04 Python
python判断一个对象是否可迭代的例子
2019/07/22 Python
tensorflow 实现数据类型转换
2020/02/17 Python
使用CSS3来绘制一个月食图案
2015/07/18 HTML / CSS
HTML中使用SVG与SVG预定义形状元素介绍
2013/06/28 HTML / CSS
Ann Taylor官方网站:美国最大的女性产品制造商之一
2016/09/14 全球购物
您熟悉ORM(Object-Relation Mapping)吗?请谈谈您所理解的ORM
2016/02/08 面试题
电子商务专业毕业生工作推荐信
2013/11/17 职场文书
群众路线教育党课主持词
2014/04/01 职场文书
2014年房地产销售工作总结
2014/12/01 职场文书
《为人民服务》教学反思
2016/02/20 职场文书
python中sys模块的介绍与实例
2021/04/17 Python
Java时间工具类Date的常用处理方法
2022/05/25 Java/Android