Chinaunix首页 | 论坛 | 博客
  • 博客访问: 314318
  • 博文数量: 111
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 707
  • 用 户 组: 普通用户
  • 注册时间: 2013-02-26 11:00
个人简介

小伙向前冲呀,小伙向前冲呀。

文章分类

全部博文(111)

文章存档

2014年(43)

2013年(68)

我的朋友

分类: PHP

2013-03-08 06:40:24

php 验证码生成与调用的例子,平时开发中经常使用,记录一下。

1、验证码生成文件code.php

点击(此处)折叠或打开

  1. <?
  2. Header("Content-type:image/png");
  3. //定义header,声明图片文件,最好是png,无版权之扰;
  4. //生成新的四位整数验证码
  5. session_start();//开启session;
  6. authnum_session = '';
  7. str = 'abcdefghijkmnpqrstuvwxyz1234567890';
  8. //定义用来显示在图片上的数字和字母;
  9. l = strlen(str); //得到字串的长度;
  10. //循环随机抽取四位前面定义的字母和数字;
  11. for(i=1;i<=4;i++)
  12. {
  13. num=rand(0,l-1);
  14. //每次随机抽取一位数字;从第一个字到该字串最大长度,
  15. //减1是因为截取字符是从0开始起算;这样34字符任意都有可能排在其中;
  16. authnum_session.= str[num];
  17. //将通过数字得来的字符连起来一共是四位;
  18. }
  19. session_register("authnum_session");
  20. //用session来做验证也不错;注册session,名称为authnum_session,
  21. //其它页面只要包含了该图片
  22. //即可以通过_SESSION["authnum_session"]来调用

  23. //生成验证码图片,
  24. srand((double)microtime()*1000000);
  25. im = imagecreate(50,20);//图片宽与高;
  26. //主要用到黑白灰三种色;
  27. black = ImageColorAllocate(im, 0,0,0);
  28. white = ImageColorAllocate(im, 255,255,255);
  29. gray = ImageColorAllocate(im, 200,200,200);
  30. //将四位整数验证码绘入图片
  31. imagefill(im,68,30,gray);
  32. //如不用干扰线,注释就行了;
  33. li = ImageColorAllocate(im, 220,220,220);
  34. for(i=0;i<3;i++)
  35. {//加入3条干扰线;也可以不要;视情况而定,因为可能影响用户输入;
  36. imageline(im,rand(0,30),rand(0,21),rand(20,40),rand(0,21),li);
  37. }
  38. //字符在图片的位置;
  39. imagestring(im, 5, 8, 2, authnum_session, white);
  40. for(i=0;i<90;i++)
  41. {//加入干扰象素
  42. imagesetpixel(im, rand()%70 , rand()%30 , gray);
  43. }
  44. ImagePNG(im);
  45. ImageDestroy(im);
  46. ?>
以上代码,参考了如下的文章:
php图片验证码




2、调用验证码的页面 sessionValidate.php

点击(此处)折叠或打开

  1. <?php
  2. session_start();
  3. //在页首先要开启session,
  4. //error_reporting(2047);
  5. session_destroy();
  6. //将session去掉,以每次都能取新的session值;
  7. //用seesion 效果不错,也很方便
  8. ?>
  9. <html>
  10. <head>
  11. <title>session 图片验证实例</title>
  12. </head>
  13. <body>
  14. 此例为session验证实例
  15. <form action="" method="post">
  16. 验证码:<input type="text" name="validate" value="" size=10> <img src="checkNum_session.php"><br>
  17. <input type="submit">
  18. </form>
  19. <?php
  20. //打印上一个session;
  21. echo "上一个session:"._SESSION["authnum_session"]."
    ";
  22. validate="";
  23. if(isset(_POST["validate"])){
  24. validate=_POST["validate"];
  25. echo "您刚才输入的是:"._POST["validate"]."
    状态:"
    ;
  26. if(validate!=_SESSION["authnum_session"]){
  27. //判断session值与用户输入的验证码是否一致;
  28. echo "输入有误";
  29. }else{
  30. echo "通过验证";
  31. }
  32. }
  33. /*
  34. //打印全部session;
  35. PrintArr(_SESSION);
  36. function PrintArr(aArray){
  37. echo '';<br /> </li> <li> print_r(aArray);<br /> </li> <li> echo '';
  38. }
  39. */
  40. ?>
小记:今天是不是国内的dns又大面积故障了,好多站不能访问。

阅读(1723) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~