PHP验证码,php验证码代码
ウェブサイトのバックエンド
PHP验证码,php验证码代码
设计一个验证码类,在需要的时候可以随时调用
验证码类,保存为ValidateCode.class.php
<span> 1</span> <?<span>php </span><span> 2</span> <span>//</span><span>验证码类</span> <span> 3</span> <span>session_start</span><span>(); </span><span> 4</span> <span>class</span><span> ValidateCode { </span><span> 5</span> <span>private</span> <span>$charset</span> = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';<span>//</span><span>随机因子</span> <span> 6</span> <span>private</span> <span>$code</span>;<span>//</span><span>验证码</span> <span> 7</span> <span>private</span> <span>$codelen</span> = 4;<span>//</span><span>验证码长度</span> <span> 8</span> <span>private</span> <span>$width</span> = 130;<span>//</span><span>宽度</span> <span> 9</span> <span>private</span> <span>$height</span> = 50;<span>//</span><span>高度</span> <span>10</span> <span>private</span> <span>$img</span>;<span>//</span><span>图形资源句柄</span> <span>11</span> <span>private</span> <span>$font</span>;<span>//</span><span>指定的字体</span> <span>12</span> <span>private</span> <span>$fontsize</span> = 20;<span>//</span><span>指定字体大小</span> <span>13</span> <span>private</span> <span>$fontcolor</span>;<span>//</span><span>指定字体颜色 </span><span>14</span> <span> //构造方法初始化</span> <span>15</span> <span>public</span> <span>function</span><span> __construct() { </span><span>16</span> <span>$this</span>->font = './latha.ttf';<span>//</span><span>注意字体路径要写对,否则显示不了图片</span> <span>17</span> <span> } </span><span>18</span> <span>//</span><span>生成随机码</span> <span>19</span> <span>private</span> <span>function</span><span> createCode() { </span><span>20</span> <span>$_len</span> = <span>strlen</span>(<span>$this</span>->charset)-1<span>; </span><span>21</span> <span>for</span> (<span>$i</span>=0;<span>$i</span><<span>$this</span>->codelen;<span>$i</span>++<span>) { </span><span>22</span> <span>$this</span>->code .= <span>$this</span>->charset[<span>mt_rand</span>(0,<span>$_len</span><span>)]; </span><span>23</span> <span> } </span><span>24</span> <span> } </span><span>25</span> <span>//</span><span>生成背景</span> <span>26</span> <span>private</span> <span>function</span><span> createBg() { </span><span>27</span> <span>$this</span>->img = imagecreatetruecolor(<span>$this</span>->width, <span>$this</span>-><span>height); </span><span>28</span> <span>$color</span> = imagecolorallocate(<span>$this</span>->img, <span>mt_rand</span>(157,255), <span>mt_rand</span>(157,255), <span>mt_rand</span>(157,255<span>)); </span><span>29</span> imagefilledrectangle(<span>$this</span>->img,0,<span>$this</span>->height,<span>$this</span>->width,0,<span>$color</span><span>); </span><span>30</span> <span> } </span><span>31</span> <span>//</span><span>生成文字</span> <span>32</span> <span>private</span> <span>function</span><span> createFont() { </span><span>33</span> <span>$_x</span> = <span>$this</span>->width / <span>$this</span>-><span>codelen; </span><span>34</span> <span>for</span> (<span>$i</span>=0;<span>$i</span><<span>$this</span>->codelen;<span>$i</span>++<span>) { </span><span>35</span> <span>$this</span>->fontcolor = imagecolorallocate(<span>$this</span>->img,<span>mt_rand</span>(0,156),<span>mt_rand</span>(0,156),<span>mt_rand</span>(0,156<span>)); </span><span>36</span> imagettftext(<span>$this</span>->img,<span>$this</span>->fontsize,<span>mt_rand</span>(-30,30),<span>$_x</span>*<span>$i</span>+<span>mt_rand</span>(1,5),<span>$this</span>->height / 1.4,<span>$this</span>->fontcolor,<span>$this</span>->font,<span>$this</span>->code[<span>$i</span><span>]); </span><span>37</span> <span> } </span><span>38</span> <span> } </span><span>39</span> <span>//</span><span>生成线条、雪花</span> <span>40</span> <span>private</span> <span>function</span><span> createLine() { </span><span>41</span> <span>//</span><span>线条</span> <span>42</span> <span>for</span> (<span>$i</span>=0;<span>$i</span><6;<span>$i</span>++<span>) { </span><span>43</span> <span>$color</span> = imagecolorallocate(<span>$this</span>->img,<span>mt_rand</span>(0,156),<span>mt_rand</span>(0,156),<span>mt_rand</span>(0,156<span>)); </span><span>44</span> imageline(<span>$this</span>->img,<span>mt_rand</span>(0,<span>$this</span>->width),<span>mt_rand</span>(0,<span>$this</span>->height),<span>mt_rand</span>(0,<span>$this</span>->width),<span>mt_rand</span>(0,<span>$this</span>->height),<span>$color</span><span>); </span><span>45</span> <span> } </span><span>46</span> <span>//</span><span>雪花</span> <span>47</span> <span>for</span> (<span>$i</span>=0;<span>$i</span><100;<span>$i</span>++<span>) { </span><span>48</span> <span>$color</span> = imagecolorallocate(<span>$this</span>->img,<span>mt_rand</span>(200,255),<span>mt_rand</span>(200,255),<span>mt_rand</span>(200,255<span>)); </span><span>49</span> imagestring(<span>$this</span>->img,<span>mt_rand</span>(1,5),<span>mt_rand</span>(0,<span>$this</span>->width),<span>mt_rand</span>(0,<span>$this</span>->height),'*',<span>$color</span><span>); </span><span>50</span> <span> } </span><span>51</span> <span> } </span><span>52</span> <span>//</span><span>输出</span> <span>53</span> <span>private</span> <span>function</span><span> outPut() { </span><span>54</span> <span>header</span>('Content-type:image/png'<span>); </span><span>55</span> imagepng(<span>$this</span>-><span>img); </span><span>56</span> imagedestroy(<span>$this</span>-><span>img); </span><span>57</span> <span> } </span><span>58</span> <span>//</span><span>对外生成</span> <span>59</span> <span>public</span> <span>function</span><span> doimg() { </span><span>60</span> <span>$this</span>-><span>createBg(); </span><span>61</span> <span>$this</span>-><span>createCode(); </span><span>62</span> <span>$this</span>-><span>createLine(); </span><span>63</span> <span>$this</span>-><span>createFont(); </span><span>64</span> <span>$this</span>-><span>outPut(); </span><span>65</span> <span> } </span><span>66</span> <span>//</span><span>获取验证码</span> <span>67</span> <span>public</span> <span>function</span><span> getCode() { </span><span>68</span> <span>return</span> <span>strtolower</span>(<span>$this</span>-><span>code); </span><span>69</span> <span> } </span><span>70</span> }
ログイン後にコピー
注意:第16行中,要修改字体的路径,否则字体图片无法显示
实现,保存为captcha.php
<span>1</span> <span>session_start</span><span>(); </span><span>2</span> <span>require</span> './ValidateCode.class.php'; <span>//</span><span>先把类包含进来,实际路径根据实际情况进行修改。</span> <span>3</span> <span>$_vc</span> = <span>new</span> ValidateCode(); <span>//</span><span>实例化一个对象</span> <span>4</span> <span>$_vc</span>-><span>doimg(); </span><span>5</span> <span>$_SESSION</span>['authnum_session'] = <span>$_vc</span>->getCode();<span>//</span><span>验证码保存到SESSION中</span>
ログイン後にコピー
页面使用
<span><</span><span>img </span><span>title</span><span>="点击刷新"</span><span> src</span><span>="./captcha.php"</span><span> align</span><span>="absbottom"</span><span> onclick</span><span>="this.src='captcha.php?'+Math.random();"</span><span>></</span><span>img</span><span>></span>
ログイン後にコピー
转载自:一个漂亮的php验证码类(分享)
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最高のグラフィック設定
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
アサシンのクリードシャドウズ:シーシェルリドルソリューション
2週間前
By DDD
R.E.P.O.誰も聞こえない場合はオーディオを修正する方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:Myriseのすべてのロックを解除する方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック
Gmailメールのログイン入り口はどこですか?
7461
15


CakePHP チュートリアル
1376
52


Steamのアカウント名の形式は何ですか
77
11


NYTの接続はヒントと回答です
17
17

