首頁  >  文章  >  php教程  >  php學習筆記:利用gd庫產生圖片,並實作隨機驗證碼

php學習筆記:利用gd庫產生圖片,並實作隨機驗證碼

WBOY
WBOY原創
2016-09-14 09:24:01903瀏覽

說明:一些基本的程式碼我都做了註釋,這裡實作的驗證碼位數、需要用的字串都可以再設定。有我的註釋,大家應該很容易看得懂。

基本思路:

     1.用mt_rand()隨機產生數字決定需要取得的字串,對字串進行拼接(覺得產生的驗證碼覺得有點太擠,大家可以再字串中間拼接個空格鍵),實現隨機驗證碼;

     備註:建議大家用mt_rand(),而不是rand(),前者效率更高

     2.利用gd庫產生圖片,將隨機字串寫到圖片輸出。

效果:

每次刷新,都會產生一個隨機驗證,後期我可能還會補充怎麼實現隨機碼點擊圖片就再次更新

 

代碼:

 

<span style="font-size: 18px;"><?<span style="color: #000000;">php
</span><span style="color: #008000;">//</span><span style="color: #008000;"> 创建画布</span>
<span style="color: #800080;">$width</span> = 120;   <span style="color: #008000;">//</span><span style="color: #008000;"> 规定画布的宽高</span>
<span style="color: #800080;">$height</span> = 45<span style="color: #000000;">;
</span><span style="color: #800080;">$image</span> = imagecreatetruecolor(<span style="color: #800080;">$width</span>, <span style="color: #800080;">$height</span>);  <span style="color: #008000;">//</span><span style="color: #008000;"> 创建一幅真彩色图像
// 添加一些即将用到的颜色</span>
<span style="color: #800080;">$white</span> = imagecolorallocate(<span style="color: #800080;">$image</span>, 0xf2, 0xec, 0xe0<span style="color: #000000;">);
</span><span style="color: #800080;">$orange</span> = imagecolorallocate(<span style="color: #800080;">$image</span>, 0xff, 0xa5, 0x4c<span style="color: #000000;">);
</span><span style="color: #008000;">//</span><span style="color: #008000;"> 对画布背景填充颜色</span>
imagefill(<span style="color: #800080;">$image</span>, 0, 0, <span style="color: #800080;">$white</span><span style="color: #000000;">);

</span><span style="color: #008000;">//</span><span style="color: #008000;">mt_rand  获取随机数 mt_rand(min, max);</span>
    <span style="color: #0000ff;">function</span><span style="color: #000000;">  str_rand(){
        </span><span style="color: #800080;">$str</span>="abcdefghijkmnpqrstuvwxyz0123456789ABCDEFGHIGKLMNPQRSTUVWXYZ"<span style="color: #000000;">;
        </span><span style="color: #800080;">$rand</span>=""<span style="color: #000000;">;
        </span><span style="color: #0000ff;">for</span>(<span style="color: #800080;">$i</span>=0; <span style="color: #800080;">$i</span><5; <span style="color: #800080;">$i</span>++){<span style="color: #008000;">//</span><span style="color: #008000;">获取5个随机的字符串</span>
            <span style="color: #800080;">$rand</span> .= <span style="color: #800080;">$str</span>[<span style="color: #008080;">mt_rand</span>(0, <span style="color: #008080;">strlen</span>(<span style="color: #800080;">$str</span>)-1)];  <span style="color: #008000;">//</span><span style="color: #008000;">如:随机数为30  则:$str[30]</span>
<span style="color: #000000;">        }
        </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">$rand</span><span style="color: #000000;">;
    }
</span><span style="color: #800080;">$verifyCode</span>=<span style="color: #000000;">str_rand();
</span><span style="color: #008000;">//</span><span style="color: #008000;"> 画一串字符串在画布上</span>
imagestring(<span style="color: #800080;">$image</span>, 10, 10, 10, "<span style="color: #800080;">$verifyCode</span>", <span style="color: #800080;">$orange</span><span style="color: #000000;">);
</span><span style="color: #008000;">//</span><span style="color: #008000;"> 通知浏览器输出的是图像(png类型)</span>
<span style="color: #008080;">header</span>('Content-Type: image/png'<span style="color: #000000;">);
</span><span style="color: #008000;">//</span><span style="color: #008000;"> 输出到浏览器</span>
imagepng(<span style="color: #800080;">$image</span><span style="color: #000000;">);
</span><span style="color: #008000;">//</span><span style="color: #008000;"> 释放图像资源</span></span>

 

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn