`
wangking717
  • 浏览: 257374 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

写了一个PHP随机问答验证码,安全性个人认为还是不错的。

阅读更多

wangking717 写道
安全特点一:

1.生成的内容不是最终结果,而是一个问答系统,需要用户回答该问题,安全系数较传统验证码更为严谨。

2.生成的每个数字的颜色,字体,位置都是随机的,这样别人很难捕获到程序的规则。(干扰线就没去弄了)

 

如果有什么好的提议,可以留言,一起改善代码:

<?php  
//$i为要写在画板的位置,$num为要写的文字  
function rand4string($i,$num){  
    global $image_width,$image_height,$img;  
    $font=mt_rand(3,5);  
    $x=mt_rand(1,8)+$image_width*$i/6;  
    $y=mt_rand(1,$image_height/4);   
    $color=imagecolorallocate($img,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200));  
    imagestring($img,$font,$x,$y,$num,$color);  
}  
session_start();  
header("content-type:image/png");  
$image_width=80;  
$image_height=18;  
$img = imagecreate($image_width,$image_height);  
imagecolorallocate($img,255,255,255);  
$random4symbol = array("+","-","x");    //三个符号进行循环  
$result = 0;  
$symbol = $random4symbol[mt_rand(0,count($random4symbol)-1)];  
$num1 = mt_rand(1,9);  
rand4string(0,$num1);  
$num2 = mt_rand(1,9);  
switch ($symbol){  
    case "+":  
        $result = $num1 + $num2;  
        rand4string(1,"+");  
        break;  
    case "-":  
        $result = $num1 - $num2;  
        rand4string(1,"-");  
        break;  
    case "x":  
        $result = $num1 * $num2;  
        rand4string(1,"x");  
        break;  
}  
rand4string(2,$num2);  
rand4string(3,"=");  
rand4string(4,"?");  
$_SESSION['code'] = $result;  
imagepng($img);  
imagedestroy($img);  
?>  

 

打完收工。。呵呵。

分享到:
评论
2 楼 521069108 2011-09-21  
估计要存数据库才能实现我说的那样 - 0
1 楼 521069108 2011-09-21  
唔,有点意思,能只能增加中文回答之类的不呢?

相关推荐

    手机、电话语音验证码源代码(包括asp、jsp、php、asp.net版本).rar

    验证通是业内首家提供语音验证码的网站,提供详细的客户接口示例。为用户提供安全、全面、便捷的支付方式! 此示例包含4种主流开发平台代码,分别是PHP,JAVA,ASP,ASP.NET。详细请看里面的示例说明文档。 账号更...

    PHP简单验证码功能机制实例详解

    网站的安全性是开发者不可忽视的一个问题,目前使用最多的一种可以提高网站安全性的方法就是使用验证码功能机制,有的仅仅使用一个几位数字字母混乱的验证码,有的进行手机发送短信进行验证,有的使用邮箱发送邮件...

    手机短信验证码php版源代码

    验证通是业内首家提供语音验证码的网站,提供详细的客户接口示例。 账号更安全如:游戏玩家绑定了手机或固话,只可用绑定过的号码向验证通获取随机密码,才可以登录游戏或转账等一系列的操作等 用户信息更真实:只有...

    电话语音验证码源代码(包括php,jsp,asp,asp.net)

    验证通是业内首家提供语音验证码的网站,提供详细的客户接口示例。 账号更安全如:游戏玩家绑定了手机或固话,只可用绑定过的号码向验证通获取随机密码,才可以登录游戏或转账等一系列的操作等 用户信息更真实:只有...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例128 获取数组中最后一个元素 158 实例129 去除数组中的重复元素 158 实例130 字符串与数组的转换 159 实例131 对数组元素进行随机排序 160 实例132 随机抽取数组中元素 161 实例133 二维数组的输出 162 实例134 ...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例128 获取数组中最后一个元素 158 实例129 去除数组中的重复元素 158 实例130 字符串与数组的转换 159 实例131 对数组元素进行随机排序 160 实例132 随机抽取数组中元素 161 实例133 二维数组的输出 162 实例134 ...

    PHP程序开发范例宝典III

    个实例,每个实例都突出实用性,绝大部分实例都体现了PHP编程人员在实际项目开发过程中总结出的经验技巧。  《PHP程序开发范例宝典》内容充实,实例丰富,特别适于PHP编程人员和广大计算机爱好者学习开发使用,也...

    php网络开发完全手册

    17.4.4 创建一个有时间限制的Cookie 291 17.4.5 创建一个有范围限制的Cookie 292 17.4.6 删除Cookie 292 17.4.7 浏览器重定向 292 17.4.8 Cookie的常见问题 293 17.5 Cookie应用实例——登录验证 293 17.5.1 HTML...

    JAVA上百实例源码以及开源项目

     一个Java+ajax写的登录实例,附有JAVA源文件,JAVA新手朋友可以学习一下。 JAVA+JSP的聊天室 8个目标文件 简单 JavaScript万年历 显示出当前时间及年份,还可以选择年份及月份和日期 Java编写的HTML浏览器 一个...

    JAVA上百实例源码以及开源项目源代码

     一个Java+ajax写的登录实例,附有JAVA源文件,JAVA新手朋友可以学习一下。 JAVA+JSP的聊天室 8个目标文件 简单 JavaScript万年历 显示出当前时间及年份,还可以选择年份及月份和日期 Java编写的HTML浏览器 一个...

    帝国备份王(Empirebak) 2010 官方版.zip

    3、安全性 备份文件均生成*.php文件,并且采用登录验证,只有登录的管理员才能进行数据恢复; 备份目录、压缩目录可自定义; 支持密码与认证码双重密码登录验证; 登录随机验证码加密验证; 管理员登录验证COOKIE...

    VeryIDE Bee 互动营销**台 v1.5 UTF-8.rar

    优化 替补广告由一个变为多个,并改进页面提示,感谢 暨阳社区 提供建议 优化 修正表单中的"红丝带"皮肤风格在导航发生变化时的错位问题 优化 表单、试题、投票和通行证模板变量 优化 投票缓存一分为二,将实时...

    115cms综合内容管理系统-PHP

    本产品源码简洁、严谨、安全、高效、源码100%开源,作者用心优化每一行代码,减少冗余,给用户的第一感觉就是“快”,程序运行快、加载快、效率高、轻量级!!!。 115cms综合内容管理系统集成实用功能如下: 基本...

    帝国网站管理系统 v6.0简体GBK

    安全性不断加锁:前、后台COOKIE变量前缀完全分开;COOKIE认证码验证加IP验证;认证随机码分开。 会员界面及其它动态页面模板单独分离 JS调用支持调用自定义字段 不同会员组可以设置不同的发布信息权限、审核及发布...

    帝国网站管理系统 v6.0简体UTF8

    安全性不断加锁:前、后台COOKIE变量前缀完全分开;COOKIE认证码验证加IP验证;认证随机码分开。 会员界面及其它动态页面模板单独分离 JS调用支持调用自定义字段 不同会员组可以设置不同的发布信息权限、审核及发布...

    亚马逊机械土耳其工具「Tools for Amazon's Mechanical Turk」-crx插件

    注意:在亚马逊的Mechanical Turk网站上,不能保证使用此扩展程序的安全性。扩展的作者不承担与使用此扩展相关的任何风险。版本历史记录:1.1.9-将验证码设置放入高级菜单,并添加启用/禁用所有验证码设置按钮 1.1.8...

    仿世纪佳缘婚介交友系统5.3 ASP+SQL

    系统设置项分成几大类:[基本设置]、[网站信息]、[安全设置]、[用户选项设置]、[邮件选项设置]、[注册选项设置]、[系统选项设置]、[上传选项设置]、[验证码设置]、[官方通讯设置]、[服务升级设置]、[支持接口设置] ...

Global site tag (gtag.js) - Google Analytics