<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[沧海一粟]]></title> 
<link>http://www.dzhope.com/index.php</link> 
<description><![CDATA[Web系统架构与服务器运维,php开发]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[沧海一粟]]></copyright>
<item>
<link>http://www.dzhope.com/post//</link>
<title><![CDATA[PHP 实现的验证码]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[代码编程]]></category>
<pubDate>Mon, 19 Mar 2007 01:38:34 +0000</pubDate> 
<guid>http://www.dzhope.com/post//</guid> 
<description>
<![CDATA[ 
	　　验证码就是将一串随机产生的数字或符号，生成一幅图片，图片里加上一些干扰象素（防止OCR），由用户肉眼识别其中的验证码信息，输入表单提交网站验证，验证成功后才能使用某项功能。 <br/><br/>　　方法如下，代码一：<br/><br/><div class="code"> <br/><br/>　　&lt;?php<br/><br/>　　　　/* * Filename: authpage.php * Author: hutuworm <br/><br/>　　　　* Date: 2003-04-28 <br/><br/>　　　　* @Copyleft hutuworm.org<br/><br/>　　　　*/ srand((double)microtime()*1000000);<br/><br/>　　　　//验证用户输入是否和验证码一致 <br/><br/>　　　　if(isset($HTTP_POST_VARS&#91;&#039;authinput&#039;&#93;)) &#123; 　　　　　　if(strcmp($HTTP_POST_VARS&#91;&#039;authnum&#039;&#93;,$HTTP_POST_VARS&#91;&#039;authinput&#039;&#93;)==0) echo &quot;验证成功！&quot;; <br/><br/>　　　　else <br/><br/>　　　　　　echo &quot;验证失败！&quot;; <br/><br/>　　　　&#125; <br/><br/>　　　　//生成新的四位整数验证码 <br/><br/>　　　　while(($authnum=rand()%10000)&lt;1000);<br/><br/>　　 ?&gt;<br/></div><br/> 请输入验证码： > > <br/><br/>　　代码二：<br/><div class="code"> <br/><br/>　　&lt;?php<br/><br/>　　　　/* * Filename: authimg.php <br/><br/>　　　　* Author: hutuworm * Date: 2003-04-28 <br/><br/>　　　　* @Copyleft hutuworm.org <br/><br/>　　　　*/ <br/><br/>　　　　//生成验证码图片 <br/><br/>　　　　Header(&quot;Content-type: image/PNG&quot;); <br/><br/>　　　　srand((double)microtime()*1000000); <br/><br/>　　　　$im = imagecreate(58,28); $black = ImageColorAllocate($im, 0,0,0);<br/><br/>　　　　$white = ImageColorAllocate($im, 255,255,255); <br/><br/>　　　　$gray = ImageColorAllocate($im, 200,200,200);<br/><br/>　　　　imagefill($im,68,30,$gray); <br/><br/>　　　　//将四位整数验证码绘入图片 <br/><br/>　　　　imagestring($im, 5, 10, 8, $HTTP_GET_VARS&#91;&#039;authnum&#039;&#93;, $black);<br/><br/>　　　　for($i=0;$i&lt;50;$i++) //加入干扰象素 &#123;<br/><br/>　　　　　　imagesetpixel($im, rand()%70 , rand()%30 , $black);<br/><br/>　　　　&#125;<br/><br/>　　　　ImagePNG($im);<br/><br/>　　　　ImageDestroy($im);<br/><br/>　　?&gt;<br/></div><br/>　　这段程序已经基本上实现了验证码的生成和校验功能，但是文章作者不知道为什么却将验证码的内容显示在表单里了，这样的话，只是限制了用户必须输入验证码，对恶意程序却没有任何防范作用。可以说是在难为人，而不是防范攻击。<br/><br/>　　不过还好根据原作者的思路，我们可以将验证串保存在 session 里，这样的话，才具有一定的安全性。 代码如下： <br/><br/><div class="code"> <br/>　　&lt;?php<br/><br/>　　　　 //file:authform.php 请输入验证码： <br/><br/>　　　　/* * Filename:authimg.php<br/><br/>　　　　*/ <br/><br/>　　　　Header(&quot;Content-type:image/PNG&quot;); <br/><br/>　　　　session_start(); <br/><br/>　　　　$auth_num=&quot;&quot;; <br/><br/>　　　　session_register(&#039;auth_num&#039;); <br/><br/>　　　　$im=imagecreate(63,20);<br/><br/>　　　　srand((double)microtime()*1000000); <br/><br/>　　　　$auth_num_k=md5(rand(0,9999));<br/><br/>　　　　$auth_num=substr($auth_num_k,17,5);<br/><br/>　　　　$black=ImageColorAllocate($im,0,0,0);<br/><br/>　　　　$white=ImageColorAllocate($im,255,255,255); <br/><br/>　　　　$gray=ImageColorAllocate($im,200,200,200);<br/><br/>　　　　//ImageFill($im,63,20,$black);<br/><br/>　　　　//这行不知道为什么在我公司的服务器上出错误，换个空间ok <br/><br/>　　　　imagestring($im,5,10,3,$auth_num,$gray); <br/><br/>　　　　for($i=0;$i&lt;200;$i++) &#123; <br/><br/>　　　　　　$randcolor=ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255)); <br/><br/>　　　　　　imagesetpixel($im,rand()%70,rand()%30,$randcolor);<br/><br/>　　　　&#125;<br/><br/>　　　　ImagePNG($im);<br/><br/>　　　　ImageDestroy($im); <br/><br/>　　?&gt;<br/></div><br/><div class="code"> <br/><br/>　　&lt;?php<br/><br/>　　　　/* * Filename:authpage.php　*/ <br/><br/>　　　　session_start(); <br/><br/>　　　　$num=trim($num);<br/><br/>　　　　if($auth_num==$num &amp;&amp; $num&lt;&gt;&quot;&quot;)&#123; <br/><br/>　　　　　　echo &quot;验证成功&quot;; <br/><br/>　　　　&#125;<br/><br/>　　　　else&#123; <br/><br/>　　　　　　echo &quot;验证失败&quot;;<br/><br/>　　　　&#125; <br/><br/>　　?&gt; <br/><br/></div><br/><br/>Tags - <a href="http://www.dzhope.com/tags/%25E9%25AA%258C%25E8%25AF%2581%25E7%25A0%2581/" rel="tag">验证码</a>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post//#blogcomment</link>
<title><![CDATA[[评论] PHP 实现的验证码]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.dzhope.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>