PHP generates image verification code demo [OOP object-oriented version]
Oct 08, 2016 pm 04:04 PMThe following is a demo of generating image verification codes that I wrote in PHP this afternoon, for reference only.
This demo is divided into 4 files in total, the specific code is as follows:
1. Code in code.html:
<span style="color: #008080;"> 1</span> <span style="color: #0000ff;"><!</span><span style="color: #ff00ff;">doctype html</span><span style="color: #0000ff;">></span> <span style="color: #008080;"> 2</span> <span style="color: #0000ff;"><</span><span style="color: #800000;">html </span><span style="color: #ff0000;">lang</span><span style="color: #0000ff;">="en"</span><span style="color: #0000ff;">></span> <span style="color: #008080;"> 3</span> <span style="color: #0000ff;"><</span><span style="color: #800000;">head</span><span style="color: #0000ff;">></span> <span style="color: #008080;"> 4</span> <span style="color: #0000ff;"><</span><span style="color: #800000;">meta </span><span style="color: #ff0000;">charset</span><span style="color: #0000ff;">="utf-8"</span> <span style="color: #0000ff;">/></span> <span style="color: #008080;"> 5</span> <span style="color: #0000ff;"><</span><span style="color: #800000;">title</span><span style="color: #0000ff;">></span>登錄、注冊(cè)驗(yàn)證碼生成<span style="color: #0000ff;"></</span><span style="color: #800000;">title</span><span style="color: #0000ff;">></span> <span style="color: #008080;"> 6</span> <span style="color: #0000ff;"></</span><span style="color: #800000;">head</span><span style="color: #0000ff;">></span> <span style="color: #008080;"> 7</span> <span style="color: #0000ff;"><</span><span style="color: #800000;">body</span><span style="color: #0000ff;">></span> <span style="color: #008080;"> 8</span> <span style="color: #008000;"><!--</span> <span style="color: #008080;"> 9</span> <span style="color: #008000;"> * @Description 網(wǎng)站登錄/注冊(cè)驗(yàn)證碼生成類 </span><span style="color: #008080;">10</span> <span style="color: #008000;"> * @Author 趙一鳴 </span><span style="color: #008080;">11</span> <span style="color: #008000;"> * @OnlineDemo http://www.zymseo.com/demo/verificationcode/code.html </span><span style="color: #008080;">12</span> <span style="color: #008000;"> * @Date 2016年10月6日 </span><span style="color: #008080;">13</span> <span style="color: #008000;">--></span> <span style="color: #008080;">14</span> <span style="color: #0000ff;"><</span><span style="color: #800000;">form </span><span style="color: #ff0000;">action</span><span style="color: #0000ff;">="checkcode.php"</span><span style="color: #ff0000;"> method</span><span style="color: #0000ff;">="post"</span><span style="color: #0000ff;">></span> <span style="color: #008080;">15</span> <span style="color: #0000ff;"><</span><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="text"</span><span style="color: #ff0000;"> name</span><span style="color: #0000ff;">="code"</span> <span style="color: #0000ff;">/><</span><span style="color: #800000;">br</span><span style="color: #0000ff;">/></span> <span style="color: #008080;">16</span> <span style="color: #0000ff;"><</span><span style="color: #800000;">img </span><span style="color: #ff0000;">src</span><span style="color: #0000ff;">="showcode.php"</span><span style="color: #ff0000;"> onclick</span><span style="color: #0000ff;">="this.setAttribute('src','showcode.php?'+Math.random())"</span> <span style="color: #0000ff;">/></span> <span style="color: #008080;">17</span> <span style="color: #0000ff;"><</span><span style="color: #800000;">span</span><span style="color: #0000ff;">></span>看不清?點(diǎn)擊圖片即可切換驗(yàn)證碼<span style="color: #0000ff;"></</span><span style="color: #800000;">span</span><span style="color: #0000ff;">><</span><span style="color: #800000;">br</span><span style="color: #0000ff;">/></span> <span style="color: #008080;">18</span> <span style="color: #0000ff;"><</span><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="submit"</span><span style="color: #ff0000;"> name</span><span style="color: #0000ff;">="sub"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">="登錄/注冊(cè)"</span> <span style="color: #0000ff;">/></span> <span style="color: #008080;">19</span> <span style="color: #0000ff;"></</span><span style="color: #800000;">form</span><span style="color: #0000ff;">></span> <span style="color: #008080;">20</span> <span style="color: #0000ff;"></</span><span style="color: #800000;">body</span><span style="color: #0000ff;">></span> <span style="color: #008080;">21</span> <span style="color: #0000ff;"></</span><span style="color: #800000;">html</span><span style="color: #0000ff;">></span>
2. Code in createcode.class.php:
<span style="color: #008080;"> 1</span> <?<span style="color: #000000;">php </span><span style="color: #008080;"> 2</span> <span style="color: #008000;">/*</span><span style="color: #008000;">* </span><span style="color: #008080;"> 3</span> <span style="color: #008000;"> * @Description 網(wǎng)站登錄/注冊(cè)驗(yàn)證碼生成類 </span><span style="color: #008080;"> 4</span> <span style="color: #008000;"> * @Author 趙一鳴 </span><span style="color: #008080;"> 5</span> <span style="color: #008000;"> * @OnlineDemo http://www.zymseo.com/demo/verificationcode/code.html </span><span style="color: #008080;"> 6</span> <span style="color: #008000;"> * @Date 2016年10月6日 </span><span style="color: #008080;"> 7</span> <span style="color: #008000;">*/</span> <span style="color: #008080;"> 8</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> Createcode{ </span><span style="color: #008080;"> 9</span> <span style="color: #008000;">//</span><span style="color: #008000;">畫布資源</span> <span style="color: #008080;">10</span> <span style="color: #0000ff;">public</span> <span style="color: #800080;">$img</span><span style="color: #000000;">; </span><span style="color: #008080;">11</span> <span style="color: #008000;">//</span><span style="color: #008000;">畫布寬度</span> <span style="color: #008080;">12</span> <span style="color: #0000ff;">private</span> <span style="color: #800080;">$img_width</span><span style="color: #000000;">; </span><span style="color: #008080;">13</span> <span style="color: #008000;">//</span><span style="color: #008000;">畫布高度</span> <span style="color: #008080;">14</span> <span style="color: #0000ff;">private</span> <span style="color: #800080;">$img_height</span><span style="color: #000000;">; </span><span style="color: #008080;">15</span> <span style="color: #008000;">//</span><span style="color: #008000;">畫布顏色</span> <span style="color: #008080;">16</span> <span style="color: #0000ff;">private</span> <span style="color: #800080;">$img_bgcolor</span><span style="color: #000000;">; </span><span style="color: #008080;">17</span> <span style="color: #008000;">//</span><span style="color: #008000;">驗(yàn)證碼文字內(nèi)容</span> <span style="color: #008080;">18</span> <span style="color: #0000ff;">private</span> <span style="color: #800080;">$str_content</span><span style="color: #000000;">; </span><span style="color: #008080;">19</span> <span style="color: #008000;">//</span><span style="color: #008000;">生成的驗(yàn)證碼內(nèi)容</span> <span style="color: #008080;">20</span> <span style="color: #0000ff;">private</span> <span style="color: #800080;">$code_content</span><span style="color: #000000;">; </span><span style="color: #008080;">21</span> <span style="color: #008000;">//</span><span style="color: #008000;">驗(yàn)證碼顏色</span> <span style="color: #008080;">22</span> <span style="color: #0000ff;">private</span> <span style="color: #800080;">$code_content_color</span><span style="color: #000000;">; </span><span style="color: #008080;">23</span> <span style="color: #008000;">//</span><span style="color: #008000;">構(gòu)造函數(shù)</span> <span style="color: #008080;">24</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span> __construct(<span style="color: #800080;">$img_width</span>,<span style="color: #800080;">$img_height</span>,<span style="color: #800080;">$str_content</span>,<span style="color: #800080;">$code_content_color</span><span style="color: #000000;">){ </span><span style="color: #008080;">25</span> <span style="color: #0000ff;">if</span>(<span style="color: #800080;">$this</span>-><span style="color: #000000;">gdcheck()){ </span><span style="color: #008080;">26</span> <span style="color: #800080;">$this</span>->img_width = <span style="color: #800080;">$img_width</span><span style="color: #000000;">; </span><span style="color: #008080;">27</span> <span style="color: #800080;">$this</span>->img_height = <span style="color: #800080;">$img_height</span><span style="color: #000000;">; </span><span style="color: #008080;">28</span> <span style="color: #800080;">$this</span>->str_content = <span style="color: #800080;">$str_content</span><span style="color: #000000;">; </span><span style="color: #008080;">29</span> <span style="color: #800080;">$this</span>->code_content_color = <span style="color: #800080;">$code_content_color</span><span style="color: #000000;">; </span><span style="color: #008080;">30</span> <span style="color: #800080;">$this</span>-><span style="color: #000000;">get_code(); </span><span style="color: #008080;">31</span> <span style="color: #800080;">$this</span>-><span style="color: #000000;">session_code(); </span><span style="color: #008080;">32</span> <span style="color: #000000;"> } </span><span style="color: #008080;">33</span> <span style="color: #000000;"> } </span><span style="color: #008080;">34</span> <span style="color: #008000;">//</span><span style="color: #008000;">生成畫布</span> <span style="color: #008080;">35</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> get_img(){ </span><span style="color: #008080;">36</span> <span style="color: #008000;">//</span><span style="color: #008000;">定義畫布</span> <span style="color: #008080;">37</span> <span style="color: #800080;">$this</span>->img = imagecreatetruecolor(<span style="color: #800080;">$this</span>->img_width, <span style="color: #800080;">$this</span>-><span style="color: #000000;">img_height); </span><span style="color: #008080;">38</span> <span style="color: #008000;">//</span><span style="color: #008000;">畫布背景色</span> <span style="color: #008080;">39</span> <span style="color: #800080;">$this</span>->img_bgcolor = imagecolorallocate(<span style="color: #800080;">$this</span>->img, <span style="color: #008080;">mt_rand</span>(0,255), <span style="color: #008080;">mt_rand</span>(0,255), <span style="color: #008080;">mt_rand</span>(0,255<span style="color: #000000;">)); </span><span style="color: #008080;">40</span> <span style="color: #008000;">//</span><span style="color: #008000;">給畫圖填充背景色</span> <span style="color: #008080;">41</span> imagefill(<span style="color: #800080;">$this</span>->img, 0, 0, <span style="color: #800080;">$this</span>-><span style="color: #000000;">img_bgcolor); </span><span style="color: #008080;">42</span> <span style="color: #008000;">//</span><span style="color: #008000;">取得畫布的寬高</span> <span style="color: #008080;">43</span> <span style="color: #800080;">$img_width</span> = imagesx(<span style="color: #800080;">$this</span>-><span style="color: #000000;">img); </span><span style="color: #008080;">44</span> <span style="color: #800080;">$img_height</span> = imagesy(<span style="color: #800080;">$this</span>-><span style="color: #000000;">img); </span><span style="color: #008080;">45</span> <span style="color: #008000;">//</span><span style="color: #008000;">畫布中插入驗(yàn)證碼</span> <span style="color: #008080;">46</span> imagestring(<span style="color: #800080;">$this</span>->img, 5, (<span style="color: #800080;">$this</span>->img_width/3), (<span style="color: #800080;">$this</span>->img_height/2.5), <span style="color: #800080;">$this</span>->code_content, imagecolorallocate(<span style="color: #800080;">$this</span>->img, <span style="color: #008080;">hexdec</span>(<span style="color: #008080;">substr</span>(<span style="color: #800080;">$this</span>->code_content_color, 1,2)), <span style="color: #008080;">hexdec</span>(<span style="color: #008080;">substr</span>(<span style="color: #800080;">$this</span>->code_content_color, 3,2)), <span style="color: #008080;">hexdec</span>(<span style="color: #008080;">substr</span>(<span style="color: #800080;">$this</span>->code_content_color, 5,2<span style="color: #000000;">)))); </span><span style="color: #008080;">47</span> <span style="color: #008000;">//</span><span style="color: #008000;">畫布中插入像素點(diǎn)</span> <span style="color: #008080;">48</span> <span style="color: #800080;">$this</span>-><span style="color: #000000;">get_pix(); </span><span style="color: #008080;">49</span> <span style="color: #008000;">//</span><span style="color: #008000;">畫布中插入直線</span> <span style="color: #008080;">50</span> <span style="color: #800080;">$this</span>-><span style="color: #000000;">get_line(); </span><span style="color: #008080;">51</span> <span style="color: #008000;">//</span><span style="color: #008000;">畫布顯示</span> <span style="color: #008080;">52</span> <span style="color: #008080;">header</span>('Content-type:image/png'<span style="color: #000000;">); </span><span style="color: #008080;">53</span> imagepng(<span style="color: #800080;">$this</span>-><span style="color: #000000;">img); </span><span style="color: #008080;">54</span> <span style="color: #000000;"> } </span><span style="color: #008080;">55</span> <span style="color: #008000;">//</span><span style="color: #008000;">生成驗(yàn)證碼</span> <span style="color: #008080;">56</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> get_code(){ </span><span style="color: #008080;">57</span> <span style="color: #800080;">$str_content_len</span> = <span style="color: #008080;">strlen</span>(<span style="color: #800080;">$this</span>-><span style="color: #000000;">str_content); </span><span style="color: #008080;">58</span> <span style="color: #0000ff;">for</span>(<span style="color: #800080;">$i</span>=0;<span style="color: #800080;">$i</span><4;<span style="color: #800080;">$i</span>++<span style="color: #000000;">){ </span><span style="color: #008080;">59</span> <span style="color: #800080;">$this</span>->code_content .= <span style="color: #008080;">substr</span>(<span style="color: #800080;">$this</span>->str_content, <span style="color: #008080;">mt_rand</span>(0,<span style="color: #800080;">$str_content_len</span>-1),1<span style="color: #000000;">); </span><span style="color: #008080;">60</span> <span style="color: #000000;"> } </span><span style="color: #008080;">61</span> <span style="color: #000000;"> } </span><span style="color: #008080;">62</span> <span style="color: #008000;">//</span><span style="color: #008000;">生成像素點(diǎn)</span> <span style="color: #008080;">63</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> get_pix(){ </span><span style="color: #008080;">64</span> <span style="color: #0000ff;">for</span>(<span style="color: #800080;">$j</span>=0;<span style="color: #800080;">$j</span><300;<span style="color: #800080;">$j</span>++<span style="color: #000000;">){ </span><span style="color: #008080;">65</span> <span style="color: #800080;">$image_pix</span> .= imagesetpixel(<span style="color: #800080;">$this</span>->img, <span style="color: #008080;">mt_rand</span>(0,<span style="color: #800080;">$this</span>->img_width), <span style="color: #008080;">mt_rand</span>(0,<span style="color: #800080;">$this</span>->img_height), imagecolorallocate(<span style="color: #800080;">$this</span>->img, <span style="color: #008080;">mt_rand</span>(0,255), <span style="color: #008080;">mt_rand</span>(0,255), <span style="color: #008080;">mt_rand</span>(0,255<span style="color: #000000;">))); </span><span style="color: #008080;">66</span> <span style="color: #000000;"> } </span><span style="color: #008080;">67</span> <span style="color: #0000ff;">return</span> <span style="color: #800080;">$image_pix</span><span style="color: #000000;">; </span><span style="color: #008080;">68</span> <span style="color: #000000;"> } </span><span style="color: #008080;">69</span> <span style="color: #008000;">//</span><span style="color: #008000;">生成直線</span> <span style="color: #008080;">70</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> get_line(){ </span><span style="color: #008080;">71</span> <span style="color: #0000ff;">for</span>(<span style="color: #800080;">$l</span>=0;<span style="color: #800080;">$l</span><2;<span style="color: #800080;">$l</span>++<span style="color: #000000;">){ </span><span style="color: #008080;">72</span> <span style="color: #800080;">$img_line</span> .= imageline(<span style="color: #800080;">$this</span>->img, <span style="color: #008080;">mt_rand</span>(0,<span style="color: #800080;">$this</span>->img_width), <span style="color: #008080;">mt_rand</span>(0,<span style="color: #800080;">$this</span>->img_height), <span style="color: #008080;">mt_rand</span>(0,<span style="color: #800080;">$this</span>->img_width), <span style="color: #008080;">mt_rand</span>(0,<span style="color: #800080;">$this</span>->img_height), imagecolorallocate(<span style="color: #800080;">$this</span>->img, <span style="color: #008080;">mt_rand</span>(0,255), <span style="color: #008080;">mt_rand</span>(0,255), <span style="color: #008080;">mt_rand</span>(0,255<span style="color: #000000;">))); </span><span style="color: #008080;">73</span> <span style="color: #000000;"> } </span><span style="color: #008080;">74</span> <span style="color: #0000ff;">return</span> <span style="color: #800080;">$img_line</span><span style="color: #000000;">; </span><span style="color: #008080;">75</span> <span style="color: #000000;"> } </span><span style="color: #008080;">76</span> <span style="color: #008000;">//</span><span style="color: #008000;">session存儲(chǔ)驗(yàn)證碼</span> <span style="color: #008080;">77</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> session_code(){ </span><span style="color: #008080;">78</span> <span style="color: #008080;">session_start</span><span style="color: #000000;">(); </span><span style="color: #008080;">79</span> <span style="color: #800080;">$_SESSION</span>['code'] = <span style="color: #800080;">$this</span>-><span style="color: #000000;">code_content; </span><span style="color: #008080;">80</span> <span style="color: #000000;"> } </span><span style="color: #008080;">81</span> <span style="color: #008000;">//</span><span style="color: #008000;">判斷程序是否支持GD庫(kù)</span> <span style="color: #008080;">82</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> gdcheck(){ </span><span style="color: #008080;">83</span> <span style="color: #0000ff;">if</span>(<span style="color: #008080;">extension_loaded</span>('gd'<span style="color: #000000;">)){ </span><span style="color: #008080;">84</span> <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">true</span><span style="color: #000000;">; </span><span style="color: #008080;">85</span> }<span style="color: #0000ff;">else</span><span style="color: #000000;">{ </span><span style="color: #008080;">86</span> <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span><span style="color: #000000;">; </span><span style="color: #008080;">87</span> <span style="color: #0000ff;">exit</span><span style="color: #000000;">(); </span><span style="color: #008080;">88</span> <span style="color: #000000;"> } </span><span style="color: #008080;">89</span> <span style="color: #000000;"> } </span><span style="color: #008080;">90</span> }
3. Code in checkcode.php:
<?<span style="color: #000000;">php </span><span style="color: #008000;">/*</span><span style="color: #008000;">* * @Description 網(wǎng)站登錄/注冊(cè)驗(yàn)證碼生成類 * @Author 趙一鳴 * @OnlineDemo http://www.zymseo.com/demo/verificationcode/code.html * @Date 2016年10月6日 </span><span style="color: #008000;">*/</span> <span style="color: #008080;">header</span>('Content-type:text/html;charset="utf-8"'<span style="color: #000000;">); </span><span style="color: #008080;">session_start</span><span style="color: #000000;">(); </span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">$_POST</span>['code']!=''<span style="color: #000000;">){ </span><span style="color: #0000ff;">if</span>(<span style="color: #800080;">$_SESSION</span>['code']==<span style="color: #800080;">$_POST</span>['code'<span style="color: #000000;">]){ </span><span style="color: #0000ff;">echo</span> '<span style="color: #000000;"><script type="text/javascript"> alert("驗(yàn)證碼填寫成功"); history.go(-1); </script>'<span style="color: #000000;">; }</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{ </span><span style="color: #0000ff;">echo</span> '<span style="color: #000000;"><script type="text/javascript"> alert("驗(yàn)證碼填寫失敗"); history.go(-1); </script></span>'<span style="color: #000000;">; } }</span>
4. Code in showcode.php:
<span style="color: #008080;"> 1</span> <?<span style="color: #000000;">php </span><span style="color: #008080;"> 2</span> <span style="color: #008000;">/*</span><span style="color: #008000;">* </span><span style="color: #008080;"> 3</span> <span style="color: #008000;"> * @Description 網(wǎng)站登錄/注冊(cè)驗(yàn)證碼生成類 </span><span style="color: #008080;"> 4</span> <span style="color: #008000;"> * @Author 趙一鳴 </span><span style="color: #008080;"> 5</span> <span style="color: #008000;"> * @OnlineDemo http://www.zymseo.com/demo/verificationcode/code.html </span><span style="color: #008080;"> 6</span> <span style="color: #008000;"> * @Date 2016年10月6日 </span><span style="color: #008080;"> 7</span> <span style="color: #008000;">*/</span> <span style="color: #008080;"> 8</span> <span style="color: #0000ff;">function</span> __autoload(<span style="color: #800080;">$classname</span><span style="color: #000000;">){ </span><span style="color: #008080;"> 9</span> <span style="color: #0000ff;">include</span> <span style="color: #008080;">strtolower</span>(<span style="color: #800080;">$classname</span>).'.class.php'<span style="color: #000000;">; </span><span style="color: #008080;">10</span> <span style="color: #000000;"> } </span><span style="color: #008080;">11</span> <span style="color: #008000;">//</span><span style="color: #008000;">定義驗(yàn)證碼的取值范圍</span> <span style="color: #008080;">12</span> <span style="color: #800080;">$str_content</span> = 'abcdefghijklmnopqrstuvwxyz0123456789'<span style="color: #000000;">; </span><span style="color: #008080;">13</span> <span style="color: #008000;">//</span><span style="color: #008000;">驗(yàn)證碼文字顏色</span> <span style="color: #008080;">14</span> <span style="color: #800080;">$code_content_color</span> = '#ffffff'<span style="color: #000000;">; </span><span style="color: #008080;">15</span> <span style="color: #008000;">//</span><span style="color: #008000;">初始化對(duì)象</span> <span style="color: #008080;">16</span> <span style="color: #800080;">$code</span> = <span style="color: #0000ff;">new</span> Createcode(100,30,<span style="color: #800080;">$str_content</span>,<span style="color: #800080;">$code_content_color</span><span style="color: #000000;">); </span><span style="color: #008080;">17</span> <span style="color: #800080;">$code</span>->get_img();
Original address: http://www.zymseo.com/php/334.html
Please indicate the source when reprinting!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)