喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

上一主题 下一主题
 16  1/2  1  2  > 
     
标题: [原创]PHP中文验证码程序 欢迎指正  
 
eye_onme
新手上路
Rank: 1
初级会员


UID 69100
精华 0
积分 30
帖子 21
金钱 30 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-3-6
来自 北京
状态 离线
[原创]PHP中文验证码程序 欢迎指正

[原创]PHP中文验证码程序 欢迎指正

声明:
本文已经首发在chinaunix论坛的php板块欢迎大家指点

分享共同进步!

这是我给自己的phpwind论坛做的验证码程序 我实在看不惯那些注册机发帖机
现在居然有识别图片的脚本 我倒!
下面的验正码我用汉王正版OCR进行识别测试了 无法正确识别 所以大家放心吧
我没用使用session 本来是session的版本 后来发现集群上 还涉及同步 好麻烦
下面这个版本是用cookie的
注意字体文件一定要拷贝到当前目录下测试
本程序支持linux和win
使用起来很方便 这个文件是生成图片的文件 大家引用一下
function verify($user_str)函数是验正用户输入的函数

function c2ch($num)函数的解释
这个函数根据汉字区码表生成汉字区码我的函数只从 汉字区码从16区到36区中取汉字
因为36区后的汉字 并不常见了
每个区 94个汉字 我认为仅仅取前20个汉字就可以了 这样 也会有((36-16+1) *20)^4种可能
我认为这是目前相对安全的 随着汉字识别算法在未来突破 和 量子计算机的普及 我还是有信心设计更好的验证程序

<?php
/********************************************
* 中文验正码产生程序 v 0.1
* 作者 : eye_onme
* QQ : 64641403
* MSN : i_onme@163.com
* MAIL: i_onme@163.com
*
* WWW.TOM.COM
*
* 欢迎指出错误 和修改意见 分享让我们共同进步
* 1: 程序没用使用类进行封装
* 2: 使用的函数在php5上才能正常运行
* 3: 程序效率不够高
* 4: 希望大家不断完善 开放源代码
* 汉字博大精深 本程序仅使用常见汉字作为验正码
* 请保留以上信息 给我小小的支持吧
**********************************************/
define('CRYPT_STRING', 'MSN:i_onme@163.com');
define('RSA_CRYPT_STRING', 'QQ:64641403');
function verify($user_str){//从cookie中对比用户的输入
        if(md5($cookie_str.CRYPT_STRING)==$_COOKIE['vrify'])
                return 1;
        else
                return 0;
}
function c2ch($num){
  $ch_h = chr(substr($num,0,2)+160);
  $ch_l = chr(substr($num,2,2)+160);
  return $ch_h.$ch_l;
}
function num_rand(){
        mt_srand((double)microtime() * 1000000);
        $d= mt_rand(16,36);
        $n= mt_rand(1,19);
        return c2ch($d*100+$n);
}
$k[0]=num_rand();
$k[1]=num_rand();
$k[2]=num_rand();
$k[3]=num_rand();
$cookie_str=implode('', $k);
setcookie('vrify',md5($cookie_str.CRYPT_STRING),time()+600);
$str[0]=iconv('gb2312','UTF-8',$k[0]);
$str[1]=iconv('gb2312','UTF-8',$k[1]);
$str[2]=iconv('gb2312','UTF-8',$k[2]);
$str[3]=iconv('gb2312','UTF-8',$k[3]);
//构造图像
$x_size=80;
$y_size=25;
$font='simhei.ttf';
$pic=imagecreate($x_size,$y_size);
$background_color = imagecolorallocate ($pic, 255, 255, 255);
$black=imagecolorallocate($pic,0,0,0);
$red=imagecolorallocate($pic,255,0,0);
$ddd=imagecolorallocate($pic,255,0,255);
imagettftext($pic,15,mt_rand(-8,8),6,mt_rand(19,22),$black,$font,$str[0]);
imagettftext($pic,15,mt_rand(-8,8),37,20,$black,$font,$str[2]);
imagettftext($pic,mt_rand(15,17),mt_rand(-8,8),22,20,$ddd,$font,$str[1]);
imagettftext($pic,mt_rand(15,17),mt_rand(-8,8),54,mt_rand(19,22),$red,$font,$str[3]);
imagerectangle($pic, 0, 0, $x_size - 1, $y_size - 1,$black);
Imagepng($pic);
ImageDestroy($pic);
?>
2006-8-1 11:28 PM#1
查看资料  发短消息  QQ  顶部
 
路过
注册会员
Rank: 2
初级会员



UID 66167
精华 0
积分 114
帖子 115
金钱 114 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2005-8-24
来自 湖南
状态 离线
[推荐阅读] 用 fopen 无法打开 url (allow_url_fopen 已设为 On)
这里面有手误.
不只p5才能运行.
水太多
没看到做什么处理,能识别的.
再改改吧.
2006-8-2 11:53 AM#2
查看资料  访问主页  发短消息  ICQ 状态  Yahoo!  顶部
 
eye_onme
新手上路
Rank: 1
初级会员


UID 69100
精华 0
积分 30
帖子 21
金钱 30 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-3-6
来自 北京
状态 离线
[推荐阅读] 爱康网高新诚聘php开发经理和工程师
?
2楼什么意思啊 不明白
2006-8-2 01:15 PM#3
查看资料  发短消息  QQ  顶部
 
eye_onme
新手上路
Rank: 1
初级会员


UID 69100
精华 0
积分 30
帖子 21
金钱 30 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-3-6
来自 北京
状态 离线
[推荐阅读] mod_rewite
[汉字验证效果图 刷新看到不同的汉字,汉字难易程度可以调节]
系统必须支持iconv函数

[ 本帖最后由 eye_onme 于 2006-8-2 01:25 PM 编辑 ]


 附件: 您所在的用户组无法下载或查看附件
2006-8-2 01:21 PM#4
查看资料  发短消息  QQ  顶部
 
gouki
注册会员
Rank: 2
一般会员



UID 15556
精华 0
积分 114
帖子 99
金钱 114 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2002-7-29
状态 离线
[推荐阅读] 太神奇鸟~~
建议不用,我机器上没有iconv,你的程序和PHP5没有关系和iconv还有gd有关!



http://www.cnitblog.com/neatstudio/
http://www.neatcn.com
飞天小肥猪的简单人生
2006-8-2 02:51 PM#5
查看资料  Blog  发短消息  QQ  顶部
 
eye_onme
新手上路
Rank: 1
初级会员


UID 69100
精华 0
积分 30
帖子 21
金钱 30 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-3-6
来自 北京
状态 离线
[推荐阅读] 北京索琅国际诚招PHP程序员
iconv有替代的办法

程序的环境是php4.3或更高
2006-8-4 09:17 PM#6
查看资料  发短消息  QQ  顶部
 
chinahtml
金牌会员
Rank: 6Rank: 6


UID 69683
精华 0
积分 1011
帖子 1016
金钱 1011 喜悦币
威望 0
人脉 0
阅读权限 70
注册 2006-3-16
状态 离线
[推荐阅读] 帮我while 一下呀!
iconv可以用mb_string代替,
不过还是个麻烦,很多主机伺服器都不支持这俩




-地振山冈,一派溪山千古秀
-门朝大海,山合河水万年流
2006-8-4 10:22 PM#7
查看资料  发短消息  顶部
 
flyer_2001
新手上路
Rank: 1



UID 76661
精华 0
积分 0
帖子 5
金钱 0 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-7-18
状态 离线
[推荐阅读] 请爱的 sadly 同学(你也在线呀),请你帮个忙,谢谢了
试一试看看
2006-8-29 04:30 PM#8
查看资料  发短消息  顶部
 
hongfu (hongfu)
注册会员
Rank: 2
初级会员


UID 31555
精华 0
积分 85
帖子 119
金钱 85 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2004-9-29
来自 江西九江
状态 离线
[推荐阅读] 有没有办法屏蔽php中的waring?
dfgdfgdfgdfgdf
2006-9-1 05:55 PM#9
查看资料  发短消息  QQ  顶部
 
520m
注册会员
Rank: 2
初级会员



UID 38461
精华 0
积分 75
帖子 83
金钱 75 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2004-10-24
状态 离线
[推荐阅读] 山东phper召集了。

看看tencent的.

有几个建议:
加上雪花, 随机线条干扰.字体扭曲效果, 不唯一的字体.




http://seaprince.cn
2006-9-2 04:18 PM#10
查看资料  访问主页  Blog  发短消息  QQ  顶部
 16  1/2  1  2  > 
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 


Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 5.130550 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP