php验证码:PHP实现验证码一法
来源: 发布时间:星期一, 2009年1月12日 浏览:11次 评论:0
前段时间看了 ![](/icons/63182yi.gif) 些有关验证码 ![](/icons/63182de.gif) 文章 ![](/icons/63182dou.gif) 就是将 ![](/icons/63182yi.gif) 串随机产生 ![](/icons/63182de.gif) 数字或符号 ![](/icons/63182dou.gif) 生成 ![](/icons/63182yi.gif) 幅图片 ![](/icons/63182dou.gif) 图片里加上 ![](/icons/63182yi.gif) 些干扰象素(防止OCR) ![](/icons/63182dou.gif) 由用户肉眼识别其中 ![](/icons/63182de.gif) 验证码信息 ![](/icons/63182dou.gif) 输入表单提交网站WebSite验证 ![](/icons/63182dou.gif) 验证成功后才能使用某项功能 ![](/icons/63182dou2.gif) 有篇文章也简单 ![](/icons/63182de.gif) 介绍了实现 ![](/icons/63182de.gif) 思路方法 ![](/icons/63182dou.gif) 如下: 代码 ![](/icons/63182yi.gif) : <?php /* * Filename: authpage.php * Author: hutuworm * Date: 2003-04-28 * @Copyleft hutuworm.org */ srand((double)microtime *1000000); //验证用户输入是否和验证码 致
(is ($HTTP_POST_VARS['authinput'])) {
(strcmp($HTTP_POST_VARS['authnum'],$HTTP_POST_VARS['authinput']) 0) echo "验证成功!";
![](/icons/63182else.gif) echo "验证失败!"; } //生成新 4位整数验证码 while(($authnum=rand %10000)<1000); ?> <form action=authpage.php method=post> <table> 请输入验证码:<input type=text name=authinput style="width: 80px"><br> <input type=submit name="验证" value="提交验证码"> <input type=hidden name=authnum value=<? echo $authnum; ?>> <img src=authimg.php?authnum=<? echo $authnum; ?>> </table> </form> <?php /* * Filename: authimg.php * Author: hutuworm * Date: 2003-04-28 * @Copyleft hutuworm.org */ //生成验证码图片 Header("Content-type: image/PNG"); srand((double)microtime *1000000); $im = imagecreate(58,28); $black = ImageColorAllocate($im, 0,0,0); $white = ImageColorAllocate($im, 255,255,255); $gray = ImageColorAllocate($im, 200,200,200); imagefill($im,68,30,$gray); //将 4位整数验证码绘入图片 image ($im, 5, 10, 8, $HTTP_GET_VARS['authnum'], $black); for($i=0;$i<50;$i ) //加入干扰象素 { image pixel($im, rand %70 , rand %30 , $black); } ImagePNG($im); ImageDestroy($im); ?>
这段 ![](/icons/63182chengxu.gif) 已经基本上实现了验证码 ![](/icons/63182de.gif) 生成和校验功能 ![](/icons/63182dou.gif) 但是文章作者不知道为什么却将验证码 ![](/icons/63182de.gif) 内容显示在表单里了 ![](/icons/63182dou.gif) 这样 ![](/icons/63182de.gif) 话 ![](/icons/63182dou.gif) 只是限制了用户必须输入验证码 ![](/icons/63182dou.gif) 对恶意 ![](/icons/63182chengxu.gif) 却没有任何防范作用 ![](/icons/63182dou2.gif) 可以说是在难为人 ![](/icons/63182dou.gif) 而不是防范攻击 ![](/icons/63182dou2.gif) 不过还好根据原作者 ![](/icons/63182de.gif) 思路 ![](/icons/63182dou.gif) 我们可以将验证串保存在session里 ![](/icons/63182dou.gif) 这样 ![](/icons/63182de.gif) 话 ![](/icons/63182dou.gif) 才具有 ![](/icons/63182yi.gif) 定 ![](/icons/63182de.gif) 安全性 ![](/icons/63182dou2.gif) 代码如下: //file:authform.php <script language="javascript"> function check {
(document.forms[0].num.value ''){ alert("请输入验证码");
false; exit; }
true; } </script> <form action=authpage.php method=post _disibledevent=$num && $num<>""){ echo "验证成功"; } { echo "验证失败"; } ?>
写这篇文章我也是很郁闷 ![](/icons/63182de.gif) 心情 ![](/icons/63182dou.gif) 在google用“验证码+php”搜索到只有那篇文章 ![](/icons/63182dou.gif) 就是找不出个实用点 ![](/icons/63182de.gif) ![](/icons/63182dou2.gif) 没办法 ![](/icons/63182dou.gif) 虽然外语水平 ![](/icons/63182yi.gif) 般 ![](/icons/63182dou.gif) 还是忍痛用了全英文搜索 ![](/icons/63182dou.gif) 找到了了不知道哪个国家 ![](/icons/63182de.gif) ![](/icons/63182chengxu.gif) 员写 ![](/icons/63182de.gif) ![](/icons/63182yi.gif) 段代码 ![](/icons/63182dou.gif) 我把变量换成国人容易看懂 ![](/icons/63182de.gif) 形式 ![](/icons/63182dou.gif) 这就是我做 ![](/icons/63182de.gif) ![](/icons/63182dou2.gif) 真 ![](/icons/63182de.gif) 很希望下次用中文也能搜索出点有深度 ![](/icons/63182de.gif) 文章教程 ![](/icons/63182dou.gif) 不是说提倡资源共享 ![](/icons/63182de.gif) 么……
相关文章
读者评论
发表评论
|
|