精品深夜福利视频,日本中文字幕不卡,久久久久国产,av综合电影网站


待發短信

在線客服
產品支持 短信寶客服
合作渠道 渠道合作
服務咨詢

4001-021-502

工作時間

9:00-21:00

短信寶短信驗證碼開發教程 – 3.圖形驗證碼篇

前面的文章已經把準備工作都做好了,我們做了注冊頁面,配置文件,工具文件等基礎功能,接下來就進入短信驗證碼開發的關鍵階段,來帶領大家完成驗證碼圖片的制作,以及前臺在頁面上的調用。

驗證碼開發主要有這么幾個部分:創建一個圖片畫布,生成隨機的驗證碼,把驗證碼放到畫布上,生成干擾線,最后輸出圖片。下面上代碼:

?
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
<?php
class Code{
    //資源
    private $img;
    //畫布寬度
    private $width=100;
    //畫布高度
    private $height=30;
    //背景顏色
    private $bgColor='#ffffff';
    //驗證碼
    private $code;
    //驗證碼的隨機種子
    private $codeStr='23456789abcdefghjkmnpqrstuvwsyz';
    //驗證碼長度
    private $codeLen=4;
    //驗證碼字體
    private $font;
    //驗證碼字體大小
    private $fontSize=16;
    //驗證碼字體顏色
    private $fontColor='';
 
    public function __construct() {
    }
 
    //創建驗證碼
    public function make()
    {
        if(empty($this->font))
        {
            $this->font = __DIR__ . '/../font/consola.ttf';
        }
        $this->create();//生成驗證碼
        header("Content-type:image/png");
        imagepng($this->img);
        imagedestroy($this->img);
        exit;
    }
 
    //設置字體文件
    public function font($font)
    {
        $this->font= $font;
        return $this;
    }
 
    //設置文字大小
    public function fontSize($fontSize)
    {
        $this->fontSize=$fontSize;
        return $this;
    }
 
    //設置字體顏色
    public function fontColor($fontColor)
    {
        $this->fontColor = $fontColor;
        return $this;
    }
 
    //驗證碼數量
    public function num($num)
    {
        $this->codeLen=$num;
        return $this;
    }
 
    //設置寬度
    public function width($width)
    {
        $this->width = $width;
        return $this;
    }
 
    //設置高度
    public function height($height)
    {
        $this->height = $height;
        return $this;
    }
 
    //設置背景顏色
    public function background($color)
    {
        $this->bgColor = $color;
        return $this;
    }
 
    //返回驗證碼
    public function get() {
        return $_SESSION['code'];
    }
 
    //生成驗證碼
    private function createCode() {
        $code '';
        for ($i = 0; $i $this->codeLen; $i++) {
            $code .= $this->codeStr [mt_rand(0, strlen($this->codeStr) - 1)];
        }
        $this->code = strtoupper($code);
        $_SESSION['code'] = $this->code;
    }
 
    //建畫布
    private function create() {
        if (!$this->checkGD())
            return false;
        $w $this->width;
        $h $this->height;
        $bgColor $this->bgColor;
        $img = imagecreatetruecolor($w$h);
        $bgColor = imagecolorallocate($img, hexdec(substr($bgColor, 1, 2)), hexdec(substr($bgColor, 3, 2)), hexdec(substr($bgColor, 5, 2)));
        imagefill($img, 0, 0, $bgColor);
        $this->img = $img;
        $this->createLine();
        $this->createFont();
        $this->createPix();
        $this->createRec();
    }
 
    //畫線
    private function createLine(){
        $w $this->width;
        $h $this->height;
        $line_color "#dcdcdc";
        $color = imagecolorallocate($this->img, hexdec(substr($line_color, 1, 2)), hexdec(substr($line_color, 3, 2)), hexdec(substr($line_color, 5, 2)));
        $l $h/5;
        for($i=1;$i<$l;$i++){
            $step =$i*5;
            imageline($this->img, 0, $step$w,$step$color);
        }
        $l$w/10;
        for($i=1;$i<$l;$i++){
            $step =$i*10;
            imageline($this->img, $step, 0, $step,$h$color);
        }
    }
 
    //畫矩形邊框
    private function createRec() {
            //imagerectangle($this->img, 0, 0, $this->width - 1, $this->height - 1, $this->fontColor);
    }
 
    //寫入驗證碼文字
    private function createFont() {
        $this->createCode();
        $color $this->fontColor;
        if (!empty($color)) {
            $fontColor = imagecolorallocate($this->img, hexdec(substr($color, 1, 2)), hexdec(substr($color, 3, 2)), hexdec(substr($color, 5, 2)));
        }
        $x = ($this->width - 10) / $this->codeLen;
        for ($i = 0; $i $this->codeLen; $i++) {
            if (empty($color)) {
                $fontColor = imagecolorallocate($this->img, mt_rand(50, 155), mt_rand(50, 155), mt_rand(50, 155));
            }
            imagettftext($this->img, $this->fontSize, mt_rand(- 30, 30), $x $i + mt_rand(6, 10), mt_rand($this->height / 1.3, $this->height - 5), $fontColor$this->font, $this->code [$i]);
        }
        $this->fontColor = $fontColor;
    }
 
    //畫線
    private function createPix() {
        $pix_color $this->fontColor;
        for ($i = 0; $i < 50; $i++) {
            imagesetpixel($this->img, mt_rand(0, $this->width), mt_rand(0, $this->height), $pix_color);
        }
 
        for ($i = 0; $i < 2; $i++) {
            imageline($this->img, mt_rand(0, $this->width), mt_rand(0, $this->height), mt_rand(0, $this->width), mt_rand(0, $this->height), $pix_color);
        }
        //畫圓弧
        for ($i = 0; $i < 1; $i++) {
            // 設置畫線寬度
            imagearc($this->img, mt_rand(0, $this->width), mt_rand(0, $this->height), mt_rand(0, $this->width), mt_rand(0, $this->height)
                        , mt_rand(0, 160), mt_rand(0, 200), $pix_color);
        }
        imagesetthickness($this->img, 1);
    }
 
    //驗證GD庫
    private function checkGD() {
        return extension_loaded('gd') && function_exists("imagepng");
    }
}

好了,這樣圖形驗證碼類制作好了。接下來我們來做一個調用文件,用于把圖形驗證碼展示出來。 在sms/tool下創建showCode文件,代碼如下:

?
1
2
3
4
5
<?php
session_start(); // 開啟session會話
require('./Code.php'); // 引入驗證碼類文件
$code new Code(); // 實例化
$code->make(); // 調用驗證碼顯示方法來顯示

我們還需要完成最后一個步驟,就是在頁面上面展示圖形驗證碼。 打開在前面準備工作中創建的注冊文件register.php, 找到驗證碼這里,把代碼改成如下:

?
1
2
3
4
5
6
7
8
<div class="form-input">
    <label class="code_label">
        驗&ensp;證&ensp;碼&emsp;
        <input id="vcode" type="text" name="vcode" value=""/>
        <img id="code_img" src="./tool/show_code.php" onclick="this.src='./tool/show_code.php?'+Math.random()" />
        <p id="code_err" class="errmsg" style="margin:5px 0 0 88px; color:red;"></p>
    </label>
</div>

以上代碼我做一下解釋:在img標簽中,src引入了驗證碼圖片的展示類,把圖片直接展示在頁面上。添加onclick屬性的作用是點擊切換圖片。完成后在頁面上展示的效果如下:

圖形驗證碼制作完畢了,但是有一點要注意,在php.ini配置文件中,必須要打開GD庫。

開源插件

最新更新

電商類

CMS類

微信類

文章標簽
精品深夜福利视频,日本中文字幕不卡,久久久久国产,av综合电影网站
国产探花一区二区| 久久久久久美女精品| 国产激情综合| 国产在线不卡| 亚洲精品国产精品粉嫩| 欧美成人日韩| 精品72久久久久中文字幕| 日韩中文字幕视频网| 国产精品xx| 免费在线观看一区| 国产精品一站二站| 欧美在线黄色| 国产乱码精品一区二区三区亚洲人| 日韩精品一级二级 | 精品久久精品| 日韩精品1区2区3区| 中文字幕亚洲影视| 快she精品国产999| 免费看日韩精品| 亚洲国产一区二区三区在线播放| 99成人超碰| 亚洲欧美综合| 免费日韩精品中文字幕视频在线| 国产精品试看| 日韩精品1区2区3区| 欧美伊人久久| 欧美一级精品| 国产精品欧美大片| 狠狠久久婷婷| 精品久久国产一区| 免费视频一区二区| 在线亚洲人成| 欧美精品观看| 黄色成人精品网站| 91嫩草精品| 黑丝一区二区| 中文在线а√在线8| 日韩av电影一区| 午夜日韩av| 亚洲精品.com| 亚洲91久久| 福利一区二区三区视频在线观看| 中文国产一区| 红桃视频国产一区| 日韩有吗在线观看| 老司机免费视频一区二区| 欧美日韩亚洲一区在线观看| 99亚洲视频| 国产字幕视频一区二区| 亚洲免费资源| 欧美日韩水蜜桃| 粉嫩av一区二区三区四区五区| 久久高清国产| 蜜臀av免费一区二区三区| 国产成人精品一区二区免费看京| 亚洲有吗中文字幕| 免费精品国产的网站免费观看| 亚洲综合国产| 日本在线成人| 人在线成免费视频| 中文在线日韩| 亚洲精品福利| 日本亚洲不卡| 欧美视频一区| 日本一不卡视频| 91国内精品| 美女视频免费精品| 国产不卡一区| 日韩精品dvd| 免费精品国产的网站免费观看| 欧美日韩视频| 日韩国产欧美一区二区三区| 国产精品丝袜在线播放| 精品国产一区二区三区av片| 国产91在线播放精品| 色婷婷狠狠五月综合天色拍| 99热免费精品| 日韩三级久久| 久久一区欧美| 亚洲精品永久免费视频| 欧美.日韩.国产.一区.二区| 石原莉奈在线亚洲三区| 国产欧美激情| 久久香蕉国产| 日韩国产在线观看一区| 久久亚洲精品中文字幕| 激情久久久久久| 三级欧美韩日大片在线看| 欧美一级二区| 日韩啪啪电影网| 久久亚洲图片| 精品国产欧美日韩一区二区三区| 久久久成人网| 国产精品一区二区三区四区在线观看| 欧美在线看片| 2023国产精品久久久精品双| 欧美aⅴ一区二区三区视频| 亚洲国产一区二区在线观看 | 日韩亚洲国产欧美| 香蕉视频成人在线观看| 麻豆精品视频在线观看| 在线日韩中文| 国产精品香蕉| 亚洲色图网站| 日本美女一区| 你懂的国产精品| 日韩在线成人| 国产亚洲精品久久久久婷婷瑜伽| 精品一区二区三区在线观看视频| 亚洲三区欧美一区国产二区| 久久在线电影| 日韩精品一二区| 日韩av黄色在线| 日本精品在线播放| 在线一区视频| 韩日一区二区三区| 欧美日韩视频免费观看| 国产精东传媒成人av电影| 丝袜诱惑制服诱惑色一区在线观看 | 韩国一区二区三区视频| 日韩激情啪啪| 久久国产成人| 美女精品一区| 一区二区不卡| 日韩成人午夜精品| 日韩欧美高清一区二区三区| 天堂成人免费av电影一区| 亚洲天堂黄色| 九九久久婷婷| 国产高清一区| 三级在线观看一区二区| 老牛影视一区二区三区| 亚洲欧美不卡| 日本欧美在线看| 亚洲aa在线| 国产日韩中文在线中文字幕 | 国产欧美69| 国产精品va视频| 国产精品久久久亚洲一区| 欧美国产极品| 久久久久美女| 日韩精品一二三| 国产日韩视频在线| 日韩欧美视频专区| 免费国产亚洲视频| 国产精品成人**免费视频| av资源新版天堂在线| 影音先锋久久| 国产日韩三级| 日韩一区二区中文| 亚洲精品成人一区| 日韩欧美自拍| 亚洲精选91| 国产一区二区三区日韩精品| 美女少妇全过程你懂的久久| 九九久久国产| 欧美特黄a级高清免费大片a级| 卡一卡二国产精品| 蜜桃国内精品久久久久软件9| 免费看精品久久片| 国产精品久久久久久久久久妞妞| 美女网站视频一区| 免费在线观看精品| 精品国产网站| 不卡一区2区| 亚洲a级精品| 精品中文一区| av综合电影网站| 蜜臀a∨国产成人精品| 三上亚洲一区二区| 日韩av一区二区三区| 波多野结衣一区| 成人在线免费观看91| 国产日产一区| 亚洲制服欧美另类| 亚洲综合二区| jiujiure精品视频播放| 成人一区而且| 久久91视频| 亚洲v天堂v手机在线| 久久精品国产www456c0m| 国产精品国产三级国产在线观看| 青青草视频一区| 激情久久久久久久| 欧美久久天堂| 国产一区二区三区免费在线| 国产精品视频一区二区三区四蜜臂| 日韩中文字幕1| 综合欧美精品| 日本综合视频| 国产欧美激情| 国产精品黄色| 91免费精品| 1024精品一区二区三区| 午夜久久99| 日韩一区二区三区在线看| 欧美专区一区| 欧美激情日韩| 精品国产美女a久久9999| аⅴ资源天堂资源库在线|