Heim > php教程 > php手册 > Hauptteil

php验证码制作 - IoveC

WBOY
Freigeben: 2016-05-20 13:15:16
Original
1047 Leute haben es durchsucht

目标: 使用php生成验证码

成品:

    

逻辑代码: authcode.php

<span style="color: #000000;">php
</span><span style="color: #008080;">header</span>("Content-type:image/png"<span style="color: #000000;">);
</span><span style="color: #008080;">session_start</span><span style="color: #000000;">();
</span><span style="color: #008000;">//</span><span style="color: #008000;">$str用于存放验证码</span>
<span style="color: #800080;">$str</span>=""<span style="color: #000000;">;
</span><span style="color: #008000;">//</span><span style="color: #008000;">$charset中剔除了0,o,1,l等易混淆字符</span>
<span style="color: #800080;">$cs</span>="abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ2345678923456789"<span style="color: #000000;">;
</span><span style="color: #800080;">$img</span>=imagecreate(<span style="color: #800080;">$width</span>=100,<span style="color: #800080;">$height</span>=26<span style="color: #000000;">);
</span><span style="color: #008000;">//</span><span style="color: #008000;">图片背景色使用浅色调</span>
<span style="color: #800080;">$img_bg</span>=imagecolorallocate(<span style="color: #800080;">$img</span>,<span style="color: #008080;">rand</span>(186,255), <span style="color: #008080;">rand</span>(186,255), <span style="color: #008080;">rand</span>(186,255<span style="color: #000000;">));
</span><span style="color: #0000ff;">for</span>(<span style="color: #800080;">$i</span>=0;<span style="color: #800080;">$i</span>$i<span style="color: #000000;">){
    </span><span style="color: #008000;">//</span><span style="color: #008000;">文字颜色使用深色调</span>
    <span style="color: #800080;">$txt_color</span>=imagecolorallocate(<span style="color: #800080;">$img</span>,<span style="color: #008080;">rand</span>(0,86),<span style="color: #008080;">rand</span>(0,86),<span style="color: #008080;">rand</span>(0,86<span style="color: #000000;">));
    </span><span style="color: #008000;">//</span><span style="color: #008000;">从$charset中随机出来一个字符</span>
    <span style="color: #800080;">$tmp</span>=<span style="color: #008080;">substr</span>(<span style="color: #800080;">$cs</span>,<span style="color: #008080;">rand</span>(0,<span style="color: #008080;">strlen</span>(<span style="color: #800080;">$cs</span>)-1),1<span style="color: #000000;">);
    </span><span style="color: #008000;">//</span><span style="color: #008000;">进行偏移和显示</span>
    imagestring(<span style="color: #800080;">$img</span>,5,<span style="color: #800080;">$i</span>*24+<span style="color: #008080;">rand</span>(6,15),<span style="color: #008080;">rand</span>(2,12),<span style="color: #800080;">$tmp</span>,<span style="color: #800080;">$txt_color</span><span style="color: #000000;">);
    </span><span style="color: #800080;">$str</span>.=<span style="color: #800080;">$tmp</span><span style="color: #000000;">;
}
</span><span style="color: #008000;">//</span><span style="color: #008000;">将验证码值放入session中以备后用(验证用户输入的验证码)</span>
<span style="color: #800080;">$_SESSION</span>["authcode"]=<span style="color: #800080;">$str</span><span style="color: #000000;">;
</span><span style="color: #008000;">//</span><span style="color: #008000;">添加背景线条</span>
<span style="color: #0000ff;">for</span>(<span style="color: #800080;">$j</span>=0;<span style="color: #800080;">$j</span>$j<span style="color: #000000;">){
    </span><span style="color: #800080;">$line_color</span>=imagecolorallocate(<span style="color: #800080;">$img</span>,<span style="color: #008080;">rand</span>(150,210), <span style="color: #008080;">rand</span>(150,210), <span style="color: #008080;">rand</span>(150,210<span style="color: #000000;">));
    imageline(</span><span style="color: #800080;">$img</span>, <span style="color: #008080;">rand</span>(0, <span style="color: #800080;">$width</span>), <span style="color: #008080;">rand</span>(0, <span style="color: #800080;">$height</span>), <span style="color: #008080;">rand</span>(0, <span style="color: #800080;">$width</span>), <span style="color: #008080;">rand</span>(0, <span style="color: #800080;">$height</span>), <span style="color: #800080;">$line_color</span><span style="color: #000000;">);
}
</span><span style="color: #008000;">//</span><span style="color: #008000;">添加噪点</span>
<span style="color: #0000ff;">for</span>(<span style="color: #800080;">$i</span>=0;<span style="color: #800080;">$i</span>$i<span style="color: #000000;">){
    </span><span style="color: #800080;">$img_noisy</span>=imagecolorallocate(<span style="color: #800080;">$img</span>,<span style="color: #008080;">rand</span>(150,210), <span style="color: #008080;">rand</span>(150,210), <span style="color: #008080;">rand</span>(150,210<span style="color: #000000;">));
    imagesetpixel(</span><span style="color: #800080;">$img</span>,<span style="color: #008080;">rand</span>(0,<span style="color: #800080;">$width</span>),<span style="color: #008080;">rand</span>(0,<span style="color: #800080;">$height</span>),<span style="color: #800080;">$img_noisy</span><span style="color: #000000;">);
}
imagepng(</span><span style="color: #800080;">$img</span><span style="color: #000000;">);
imagedestroy(</span><span style="color: #800080;">$img</span>);
Nach dem Login kopieren


前端使用: register.html

<img  src="authcode.php" alt="php验证码制作 - IoveC" >
Nach dem Login kopieren

 

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage