11.code

goer ... 2022-01-07 Php
  • Php
大约 2 分钟

验证码

[toc]

# code

验证码php文件生成

<?php

    header('Content-Type:text/html;charset=utf-8');

    // 验证码

    function get_str($length=1){
        $chars = '1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ';
        //随机打乱字符
        $rand_char = str_shuffle($chars);
        //获取到字符
        $str = substr($rand_char,0,$length);  //字符串, 开始位置 ,获取一个
        return $str;
    }

    // echo get_str();

    //生成图片
    $width = 100;
    $height = 100;
    $img = imagecreatetruecolor($width,$height);

    // 设置背景颜色 rgb格式
    $bgcolor = imagecolorallocate($img,255,255,255);

    //设置文字颜色
    $textcolor = imagecolorallocate($img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));

    // 背景颜色加入图片
    imagefilledrectangle($img,0,0,$width,$height,$bgcolor);
    //第2个和第3个参数是左上角坐标
    //第4个和第5个参数是右下角坐标
    //这两个坐标可以确定一块矩形区域

    //获取字符串
    $get_code1 = get_str();
    $get_code2 = get_str();
    $get_code3 = get_str();
    $get_code4 = get_str();

    //把验证码放入图片
    //引入字体
    //如果写相对路径,验证码出不来时,把路径写成绝对路径
    $font = 'F:\phpstudy_pro\WWW\php\aa\code\ttf/texb.ttf';
    imagettftext($img,20,mt_rand(-30,30),5,50,$textcolor,$font,$get_code1);
    imagettftext($img,20,mt_rand(-30,30),30,50,$textcolor,$font,$get_code2);
    imagettftext($img,20,mt_rand(-30,30),60,50,$textcolor,$font,$get_code3);
    imagettftext($img,20,mt_rand(-30,30),70,50,$textcolor,$font,$get_code4);
    //第一个参数是图片变量
    //第二个参数是字体大小
    //第三个参数是字符倾斜度,负数向左,正数向右,数值越大角度越大
    //第四个和第五个参数是字符所在位置的x坐标和y坐标
    //第六个参数是字符颜色
    //第七个参数是字体库
    //第八个参数是需要放进去的字符


    // 绘制一些点状像素 一些点
    for($i=0;$i<=10;$i++){
        imagesetpixel($img,mt_rand(0,$width),mt_rand(0,$height),imagecolorallocate($img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255)));
    }
    //第二个和第三个参数是点的位置坐标
    //第四个参数是点的颜色

    //绘制一些线像素  一些线
    for($i=0;$i<=5;$i++){
        imageline($img,mt_rand(0,$width),mt_rand(0,$height),mt_rand(0,$width),mt_rand(0,$height),imagecolorallocate($img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255)));
         //第2/3/4/5个参数是线的两端坐标
    }

    //将验证码中的四个字符保存在session里面 $_SESSION获取到
    session_start();
    $get_sesscode = $get_code1.$get_code2.$get_code3.$get_code4;
    $_SESSION['imgcode'] = $get_sesscode;


    //输出图片
    header('Content-Type:image/png');
    imagepng($img);


?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82

html设置code

*maxlength="4" autocomplete="off" 输入最大字符 自动完成功能*

 <input type="text" name="code" maxlength="4" autocomplete="off">
<!-- 引入验证码图片 -->
<img id="code" src="../code.php" alt="">


//点击改变
<script>
    // 点击验证码,换验证码
    var code = document.getElementById('code');

    code.onclick = function(){
        this.src = '../code.php ?id='+ Math.random();
    }
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14