PHP generates image verification code demo [OOP object-oriented version]
The 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>登录、注册验证码生成<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 网站登录/注册验证码生成类 </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>看不清?点击图片即可切换验证码<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;">="登录/注册"</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 网站登录/注册验证码生成类 </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;">验证码文字内容</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;">生成的验证码内容</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;">验证码颜色</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;">构造函数</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;">画布中插入验证码</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;">画布中插入像素点</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;">生成验证码</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;">生成像素点</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存储验证码</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库</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 网站登录/注册验证码生成类 * @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("验证码填写成功"); 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("验证码填写失败"); 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 网站登录/注册验证码生成类 </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;">定义验证码的取值范围</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;">验证码文字颜色</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;">初始化对象</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

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

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

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

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)
