这就是我找的例子。<?/** Filename: authpage.php*/srand((double)microtime()*1000000);//验证用户输入是否和验证码一致if(isset($_POST['authinput'])){
if(strcmp($_POST['authnum'],$_POST['authinput'])==0)echo "验证成功!";elseecho "验证失败!";}//生成新的四位整数验证码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><?
/** Filename: authimg.php*/
//生成验证码图片
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);//将四位整数验证码绘入图片imagestring($im, 5, 10, 8, $HTTP_GET_VARS['authnum'], $white);for($i=0;$i<50;$i++) //加入干扰象素{imagesetpixel($im, rand()%70 , rand()%30 , $gray);}ImagePNG($im);ImageDestroy($im);?>

解决方案 »

  1.   

    但是我总觉得这样写会有问题<img src=authimg.php?authnum=<? echo $authnum; ?>>
      

  2.   

    楼主应该将图片写到一个文件里然后包含这个文件,显示给用户。
    <img src=authimg.png?reload=rand(0,9999)>
      

  3.   

    楼主的意思是怕使用get方式传递的随机数被人截了?
    应该是这个意思吧?
    那,个人建议使用session方式来传递随机数,这总是要比GET
    方式好许多了.不过,个人还是觉得,网络的安全是一个相对的概念,没有真正完全
    意义上的网络安全存在.所谓的安全都是以牺牲了效率等东西得来
    的.
    一般来讲,能做到尽可能好就可以了.所谓的尽可能好是指----你所
    写的东西本身的价值,数据库可靠性,程序运行效率这三者的一个平衡.个人觉得过多的追究安全没有太大意义.个人意见,供楼主参考:)
      

  4.   

    应该用session,安全、稳定、维护,最后才是性能。
      

  5.   

    to xuzuning(唠叨) 老大.给大家讲一下思路可以吗?谢谢,个人觉得学习高手的思路比直接
    拿代码,对自己的成长要有帮助许多,大家说呢?:)再次感谢
      

  6.   

    用rand生成随机数,用session保存生成的数据,将用户输入的数据与seesion中的数据进行比较,相同通过,不同重新用rand生成,重复上面
      

  7.   

    http://community.csdn.net/Expert/topic/3015/3015680.xml?temp=.4680597
      

  8.   

    粗看一下代码,感觉好像不是在做验证码
    因为根本没起到验证码的作用。
    放在session中比较好
      

  9.   

    很不错的思路:)谢谢hlddn(西藏的那片天)老大试写一个玩一下