PHP之验证码制作

"验证码用于屏蔽机器写入!!!"
目标:在底图上显示随机内容(如数字)
方法:init imagecolorallocate ( resource $image , int $red , int $green , int $blue)
     bool imagestring ( resource $image , int $font , int $x , int $y , string $s ,  
 int $col)
注意事项:控制好字体与分布,避免字体重叠或显示不全

目标:为验证码增加干扰元素,干扰的点或线(两点确定一条线)
方法:bool imagesetpixel(resource $image,int $x,int $y,int $color)
    bool imageline(resource $image,int $x1,int $y1,int $x2,int $y2,int $color)
注意事项:干扰信息一定控制好颜色,避免“喧宾夺主”

captcha.php:
  • php实现字母验证码
目标:让图片上的验证码内容显示为字母,或数字、字母混合体
方法:int rand ( int $min, int $max )
mixed array_rand ( array $input [, int $num_req = 1] )
注意事项:N/A
for( $i = 0; $i < 4; $i++) {
    $fontsize = 6;
    $fontcolor = imagecolorallocate( $image, rand(0,120), rand(0,120),rand(0,120));
    $data = 'abcdefghijklmnopqrstuvwxyz123456789';
    $fontcontent = substr( $data,rand(0,strlen($data)-1), 1 );
    $x=( $i * 100 / 4 )+rand(5,10);//设置x、y轴区间
    $y=rand(5,10);
    imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
 }
  • php通过session存储验证信息
目标:再服务器端记录验证码信息,便于用户输入后做校验
方法:bool session_start ( void )
注意事项:1. session_start()必须处于脚本最顶部
2. 多服务器情况,需要考虑几种管理session信息
  • 验证码通过表单提交、校验
目标:将已生成的验证码提供给用户,并校验用户验证码的正确性
方法:HTML
表单基础 注意事项:N/A 输入正确'; } else{ header('Content-type: text/html; charset=UTF8'); echo '输入错误'; } exit(); } ?> 确认验证

验证码图片: 换一个?

请输入图片的内容:

  • 使用js实现动态校验验证码
1. 增加可点击的“换一个”文案
2. 用js选取器选取验证码图片
3. 用js修改验证码图片地址(改src)

你可能感兴趣的:(PHP之验证码制作)