我正在尝试添加一个简单的验证码到一个hml表单。代码最初来自here

这里是生成图像并存储captcha变量的PHP脚本:

session_start();

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

header("Cache-Control: no-store, no-cache, must-revalidate");

header("Cache-Control: post-check=0, pre-check=0", false);

header("Pragma: no-cache");

function _generateRandom($length=6)

{

$_rand_src = array(

array(48,57) //digits

, array(97,122) //lowercase chars

// , array(65,90) //uppercase chars

);

srand ((double) microtime() * 1000000);

$random_string = "";

for($i=0;$i

$i1=rand(0,sizeof($_rand_src)-1);

$random_string .= chr(rand($_rand_src[$i1][0],$_rand_src[$i1][1]));

}

return $random_string;

}

$im = @imagecreatefromjpeg("captcha.jpg");

$rand = _generateRandom(3);

$_SESSION['captcha'] = $rand;

ImageString($im, 5, 2, 2, $rand[0]." ".$rand[1]." ".$rand[2]." ", ImageColorAllocate ($im, 0, 0, 0));

$rand = _generateRandom(3);

ImageString($im, 5, 2, 2, " ".$rand[0]." ".$rand[1]." ".$rand[2], ImageColorAllocate ($im, 255, 0, 0));

Header ('Content-type: image/jpeg');

imagejpeg($im,NULL,100);

ImageDestroy($im);

?>这里是验证输入的验证码的脚本:

if($_SESSION["captcha"]==$_POST["captcha"])

{

//CAPTHCA is valid; proceed the message: save to database, send by e-mail ...

echo 'CAPTHCA is valid; proceed the message';

}

else

{

echo 'CAPTHCA is not valid; ignore submission';

}

?>问题是会话似乎只存储3个字符,所以值永远不匹配 - 因为生成的图像有6个字符。

上面的代码有点奇怪(我必须承认我没有使用图像库API)。但我不知道为什么我们调用_generateRandom()的参数值为3,并且为什么要调用两次图像字符串?

php动态验证码脚本,这个PHP脚本有什么问题吗? (验证码)相关推荐

  1. C#发现之旅第十四讲 基于动态编译的VB.NET脚本引擎

    本章说明 在前面章节中,笔者使用了反射和动态编译技术实现了快速ORM框架,在本章中笔者将继续使用这些技术来实现一个VB.NET的脚本引擎,使得人们在开发中能实现类似MS Office那样实现VBA宏的 ...

  2. Python通过selenium与ddddocr库识别验证码的爆破小脚本

    最近正在学习python,本菜狗突发奇想用python写一个实现识别验证码的爆破小脚本 说干就干,于是上网查找了一下python中有没有验证码识别的库 然后就发现了ddddocr这个库,于是想通过dd ...

  3. Ae508 4000预设素材包ae与pr脚本一键式安装背景图形字幕动画转场动态海报广告视频aepr脚本模板

    Ae508 4000预设素材包ae与pr脚本一键式安装背景图形字幕动画转场动态海报广告视频aepr脚本模板 [脚本要求] 使用帮助:中文安装说明(win/Mac提供一键快速安装)英文使用视频 脚本版本 ...

  4. innerHTML动态拼接html,innerHTML动态添加html代码和脚本兼容多个浏览器

    innerHTML动态添加html代码和脚本兼容多个浏览器 发布于 2017-02-04 10:36:56 | 94 次阅读 | 评论: 0 | 来源: 网友投递 JavaScript客户端脚本语言J ...

  5. 【Groovy】Groovy 脚本调用 ( Groovy 脚本中调用另外一个 Groovy 脚本 | 调用 evaluate 方法执行 Groovy 脚本 | 参数传递 )

    文章目录 一.Groovy 脚本中调用另外一个 Groovy 脚本 1.调用 evaluate 方法执行 Groovy 脚本 2.参数传递 二.完整代码示例 1.调用者 Groovy 脚本 2.被调用 ...

  6. PHP脚本有什么用,脚本是什么 脚本有什么用的简单说明

    脚本是什么 脚本有什么用的简单说明 发布时间:2013-01-19 23:06:32   作者:佚名   我要评论 脚本(script)是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,又称 ...

  7. php mysql备份脚本_MySQL备份脚本,mysql脚本

    MySQL备份脚本,mysql脚本 mysqlbackup.php: php//备份mysql set_time_limit(0); date_default_timezone_set('PRC'); ...

  8. 第四组视频:在bash脚本中使用脚本选项

    马哥教育(http://www.magedu.com)在bash脚本中使用脚本选项.本视频是我们上课过程的实际记录.下载地址:    http://down.51cto.com/data/414002 ...

  9. 将shell脚本转为python_shell脚本将python脚本加入Linux系统服务

    用shell脚本将Python脚本做成系统服务随着系统的启动而启动,同时又可以通过"service"命令进行管理(start|stop|restart) 新建 FuzzyMatch ...

  10. linux y脚本,Linux中脚本的使用方法

    Linux中脚本的使用方法 一.前言 关于Linux中的脚本的用法,一直没有时间去好好地总结,正好今天下雨,就好好的整理一下思路吧,其实精通了一门语言,比如C语言,学习其他语言需要的成本是非常少的,同 ...

最新文章

  1. PetShop之表示层设计(转载)
  2. 基于jquery的一个javascript前端框架实现
  3. 【Flask项目】项目准备之-创建gitee账户、远程仓库以及pycharm中创建项目
  4. python中的os操作文件,文件路径
  5. mysql中non用什么_mysql Non-Transactional Database Only(只支持MyISAM)
  6. C++学习笔记-类定义的注意事项和C#的区别
  7. 苹果iOS 13暗黑模式概念图曝光 将于iOS 13.1版本更新
  8. HTML5表单那些事
  9. Swiper:基础学习
  10. 【Latex】教你如何在word中像LaTex那样打公式
  11. CSS行内样式无效,!important
  12. 使用微信企业号群发员工工资条
  13. 护理教育学考试复习题
  14. MySQL最全整理!java技术总监面试常见问题及答案
  15. 硬核干货|揭示波士顿动力机器人背后的专利技术(上)
  16. 解决工商银行网银插件报‘非正常运行的网银工具’问题
  17. 笔记本无线和有线的MAC地址修改
  18. 超市商品管理系统设计
  19. VS2017无法调试Unity
  20. 网易之幼儿园小朋友调整队形

热门文章

  1. Android实用代码七段(五)
  2. (转)自动化管理工具Saltstack之nginx部署
  3. 总结接口与类和抽象类的关系
  4. 组合使用Laravel和vfsStream测试文件上传
  5. LINUX内核分析第八周总结:进程的切换和系统的一般执行过程
  6. 解决Mysql复制Relay log read failure 的问题
  7. c++,不能声明为虚函数的函数
  8. wine 安装.netframework 2.0方法
  9. RNAseq-GO、biomaRt转换ID
  10. control-free CNV小记