91成人在线播放_欧美一区二区视频在线观看_91精品国产高清久久久久久_国产精品久久亚洲不卡4k岛国


待發短信

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

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類

微信類

文章標簽
91成人在线播放_欧美一区二区视频在线观看_91精品国产高清久久久久久_国产精品久久亚洲不卡4k岛国
国产拍欧美日韩视频二区| 不卡的看片网站| 久久亚洲综合色一区二区三区| 亚洲国产精品激情在线观看| 欧美精品亚洲一区二区在线播放| 午夜欧美2019年伦理 | 成人中文字幕在线| 国产一区二区0| 国产伦精品一区二区三区在线观看| 久久奇米777| 久久男人中文字幕资源站| 26uuu另类欧美亚洲曰本| 26uuu成人网一区二区三区| 久久久精品免费免费| 国产精品久久99| 亚洲女女做受ⅹxx高潮| 一区二区三区成人| 亚洲妇女屁股眼交7| 亚洲一区在线观看视频| 一区二区三区丝袜| 日本91福利区| 成人综合激情网| 欧美怡红院视频| 欧美一级精品大片| 国产亚洲一区二区三区| 综合激情成人伊人| 日韩精品每日更新| 成人免费看片app下载| 在线视频一区二区三区| 欧美大片在线观看一区| 日本一区二区三区国色天香| 亚洲女人小视频在线观看| 日本不卡的三区四区五区| 国产成人精品1024| 欧美视频自拍偷拍| 国产欧美日韩另类视频免费观看| 欧美大片顶级少妇| 中文字幕精品一区二区精品绿巨人| 日韩欧美一区二区在线视频| 久久蜜桃一区二区| 亚洲一区二区偷拍精品| 激情六月婷婷久久| 欧美中文字幕亚洲一区二区va在线| 懂色中文一区二区在线播放| 91国偷自产一区二区三区观看| 国产福利一区在线| 91福利视频网站| 国产欧美精品国产国产专区| 亚洲一区在线看| 成人性视频免费网站| 欧美高清视频不卡网| 亚洲欧美视频在线观看视频| 国内精品伊人久久久久影院对白| 日本一不卡视频| 高清国产一区二区| 精品国产自在久精品国产| 有码一区二区三区| 成人免费av网站| 26uuu亚洲综合色欧美| 午夜视频一区二区| 91麻豆成人久久精品二区三区| 在线视频你懂得一区二区三区| 99麻豆久久久国产精品免费| 日韩亚洲欧美成人一区| 亚洲美女免费视频| 成人av网址在线观看| 久久精品夜夜夜夜久久| 日韩精品一二三四| 欧美在线综合视频| 亚洲日本在线观看| 波多野结衣中文字幕一区二区三区 | 在线成人av影院| 亚洲美女在线一区| 成人免费观看视频| 国产拍欧美日韩视频二区| 韩国成人福利片在线播放| 日韩欧美亚洲另类制服综合在线| 国产午夜精品久久| 久久精品噜噜噜成人88aⅴ| 欧美精品久久一区二区三区| 亚洲婷婷在线视频| 成人丝袜18视频在线观看| 久久欧美中文字幕| 成人综合婷婷国产精品久久蜜臀| 色老头久久综合| 亚洲男帅同性gay1069| 粗大黑人巨茎大战欧美成人| 国产日本一区二区| 成人免费观看男女羞羞视频| 国产精品毛片大码女人| 不卡免费追剧大全电视剧网站| 欧美乱妇15p| 亚洲成a人v欧美综合天堂| 欧美在线综合视频| 日韩高清欧美激情| 精品久久国产97色综合| 韩国欧美国产一区| 国产精品久久毛片av大全日韩| 日本成人在线电影网| 欧美日韩成人一区二区| 视频在线观看一区| 2021中文字幕一区亚洲| 成人av在线播放网址| 亚洲自拍偷拍网站| 日韩一级视频免费观看在线| 国产乱国产乱300精品| |精品福利一区二区三区| 在线亚洲一区观看| 日本美女视频一区二区| 国产色婷婷亚洲99精品小说| 91蝌蚪porny| 老鸭窝一区二区久久精品| 中文字幕成人av| 欧美妇女性影城| 不卡视频在线看| 蜜桃视频一区二区| √…a在线天堂一区| 日韩视频一区二区| www.成人网.com| 蜜桃精品在线观看| 最新成人av在线| 日韩三级高清在线| 91亚洲午夜精品久久久久久| 日韩av不卡一区二区| 国产精品久久久久影院色老大 | 狠狠色丁香婷综合久久| 中文字幕乱码久久午夜不卡 | 日韩经典一区二区| 久久青草欧美一区二区三区| 日本高清免费不卡视频| 国产乱子伦一区二区三区国色天香| 日韩午夜精品电影| 成人一道本在线| 三级久久三级久久久| 亚洲丝袜制服诱惑| 久久久精品天堂| 日韩一区二区三区三四区视频在线观看| 午夜欧美2019年伦理| 中文字幕的久久| 欧美一区二区不卡视频| 在线一区二区观看| 99国内精品久久| 国产精品一品二品| 久久精品99国产精品| 亚洲3atv精品一区二区三区| 国产精品无人区| 中文一区在线播放| 精品国内二区三区| 日韩亚洲欧美在线观看| 欧美三级电影精品| 91精品1区2区| 91片在线免费观看| 不卡欧美aaaaa| 成人久久18免费网站麻豆| 韩国欧美国产一区| 韩国女主播成人在线| 久久99精品久久久久婷婷| 热久久免费视频| 奇米精品一区二区三区四区 | 亚洲国产精品ⅴa在线观看| 日韩精品一区二区三区三区免费| 国产在线不卡一区| 麻豆国产欧美一区二区三区| 日韩精品一二区| 美女网站色91| 极品少妇xxxx精品少妇偷拍| 国内外成人在线视频| 国产精品888| 国产伦精一区二区三区| 国产成人av电影在线播放| 国产成人在线网站| 懂色中文一区二区在线播放| 成人精品国产一区二区4080| 国产成人亚洲精品狼色在线| 国产成人一级电影| 97精品久久久午夜一区二区三区| 奇米影视7777精品一区二区| 性久久久久久久| 日韩不卡免费视频| 精品一区二区在线播放| 国产成人午夜片在线观看高清观看| 亚洲制服丝袜av| 石原莉奈在线亚洲二区| 久久www免费人成看片高清| 国产一区二区网址| 99精品欧美一区二区三区小说| 日本vs亚洲vs韩国一区三区二区| 欧美极品少妇xxxxⅹ高跟鞋 | 日韩av一区二区三区四区| 午夜不卡av在线| 精品亚洲porn| 国产福利精品一区二区| 一本大道av伊人久久综合| 欧美日韩在线综合| 精品久久久久99| 亚洲欧洲一区二区三区| 午夜欧美视频在线观看| 国产成人综合在线播放| av亚洲精华国产精华精华| 97se亚洲国产综合自在线不卡|