代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
PHP
】
生成验证码图片函数
作者:
Dezai.CN
/ 发布于
2012/7/26
/
580
生成验证码图片函数
<div> <pre class="php" style="font-family: monospace;"><span style="color: rgb(0, 153, 51); font-style: italic;">/** * 生成验证码图片 * * @param String $word 验证码在session中的变量名称 */</span> <span style="color: rgb(0, 0, 0); font-weight: bold;">function</span> valiCode<span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 0, 136);">$word</span><span style="">=</span><span style="color: rgb(0, 0, 255);">'randcode'</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">{</span> <span style="color: rgb(153, 0, 0);">Header</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 0, 255);">"Content-type: image/gif"</span><span style="color: rgb(0, 153, 0);">)</span><span style="">;</span> <span style="color: rgb(0, 0, 136);">$border</span> <span style="">=</span> <span style="color: rgb(204, 102, 204);">0</span><span style="">;</span> <span style="color: rgb(102, 102, 102); font-style: italic;">//是否要边框 1要:0不要</span> <span style="color: rgb(0, 0, 136);">$how</span> <span style="">=</span> <span style="color: rgb(204, 102, 204);">4</span><span style="">;</span> <span style="color: rgb(102, 102, 102); font-style: italic;">//验证码位数</span> <span style="color: rgb(0, 0, 136);">$w</span> <span style="">=</span> <span style="color: rgb(0, 0, 136);">$how</span><span style="">*</span><span style="color: rgb(204, 102, 204);">15</span><span style="">;</span> <span style="color: rgb(102, 102, 102); font-style: italic;">//图片宽度</span> <span style="color: rgb(0, 0, 136);">$h</span> <span style="">=</span> <span style="color: rgb(204, 102, 204);">18</span><span style="">;</span> <span style="color: rgb(102, 102, 102); font-style: italic;">//图片高度</span> <span style="color: rgb(0, 0, 136);">$fontsize</span> <span style="">=</span> <span style="color: rgb(204, 102, 204);">10</span><span style="">;</span> <span style="color: rgb(102, 102, 102); font-style: italic;">//字体大小</span> <span style="color: rgb(0, 0, 136);">$alpha</span> <span style="">=</span> <span style="color: rgb(0, 0, 255);">"abcdefghijkmnpqrstuvwxyz"</span><span style="">;</span> <span style="color: rgb(102, 102, 102); font-style: italic;">//验证码内容1:字母</span> <span style="color: rgb(0, 0, 136);">$number</span> <span style="">=</span> <span style="color: rgb(0, 0, 255);">"23456789"</span><span style="">;</span> <span style="color: rgb(102, 102, 102); font-style: italic;">//验证码内容2:数字</span> <span style="color: rgb(0, 0, 136);">$randcode</span> <span style="">=</span> <span style="color: rgb(0, 0, 255);">""</span><span style="">;</span> <span style="color: rgb(102, 102, 102); font-style: italic;">//验证码字符串初始化</span> <span style="color: rgb(153, 0, 0);">srand</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">(</span>double<span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(153, 0, 0);">microtime</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 153, 0);">)</span><span style="">*</span><span style="color: rgb(204, 102, 204);">1000000</span><span style="color: rgb(0, 153, 0);">)</span><span style="">;</span> <span style="color: rgb(102, 102, 102); font-style: italic;">//初始化随机数种子</span> <span style="color: rgb(0, 0, 136);">$im</span> <span style="">=</span> <span style="color: rgb(153, 0, 0);">ImageCreate</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 0, 136);">$w</span><span style="">,</span> <span style="color: rgb(0, 0, 136);">$h</span><span style="color: rgb(0, 153, 0);">)</span><span style="">;</span> <span style="color: rgb(102, 102, 102); font-style: italic;">//创建验证图片</span> <span style="color: rgb(102, 102, 102); font-style: italic;">/* * 绘制基本框架 */</span> <span style="color: rgb(0, 0, 136);">$bgcolor</span> <span style="">=</span> <span style="color: rgb(153, 0, 0);">ImageColorAllocate</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 0, 136);">$im</span><span style="">,</span> <span style="color: rgb(204, 102, 204);">255</span><span style="">,</span> <span style="color: rgb(204, 102, 204);">255</span><span style="">,</span> <span style="color: rgb(204, 102, 204);">255</span><span style="color: rgb(0, 153, 0);">)</span><span style="">;</span> <span style="color: rgb(102, 102, 102); font-style: italic;">//设置背景颜色</span> <span style="color: rgb(153, 0, 0);">ImageFill</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 0, 136);">$im</span><span style="">,</span> <span style="color: rgb(204, 102, 204);">0</span><span style="">,</span> <span style="color: rgb(204, 102, 204);">0</span><span style="">,</span> <span style="color: rgb(0, 0, 136);">$bgcolor</span><span style="color: rgb(0, 153, 0);">)</span><span style="">;</span> <span style="color: rgb(102, 102, 102); font-style: italic;">//填充背景色</span> <span style="color: rgb(177, 177, 0);">if</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 0, 136);">$border</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span> <span style="color: rgb(0, 0, 136);">$black</span> <span style="">=</span> <span style="color: rgb(153, 0, 0);">ImageColorAllocate</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 0, 136);">$im</span><span style="">,</span> <span style="color: rgb(204, 102, 204);">0</span><span style="">,</span> <span style="color: rgb(204, 102, 204);">0</span><span style="">,</span> <span style="color: rgb(204, 102, 204);">0</span><span style="color: rgb(0, 153, 0);">)</span><span style="">;</span> <span style="color: rgb(102, 102, 102); font-style: italic;">//设置边框颜色</span> <span style="color: rgb(153, 0, 0);">ImageRectangle</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 0, 136);">$im</span><span style="">,</span> <span style="color: rgb(204, 102, 204);">0</span><span style="">,</span> <span style="color: rgb(204, 102, 204);">0</span><span style="">,</span> <span style="color: rgb(0, 0, 136);">$w</span><span style="">-</span><span style="color: rgb(204, 102, 204);">1</span><span style="">,</span> <span style="color: rgb(0, 0, 136);">$h</span><span style="">-</span><span style="color: rgb(204, 102, 204);">1</span><span style="">,</span> <span style="color: rgb(0, 0, 136);">$black</span><span style="color: rgb(0, 153, 0);">)</span><span style="">;</span><span style="color: rgb(102, 102, 102); font-style: italic;">//绘制边框</span> <span style="color: rgb(0, 153, 0);">}</span> <span style="color: rgb(102, 102, 102); font-style: italic;">/* * 逐位产生随机字符 */</span> <span style="color: rgb(177, 177, 0);">for</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 0, 136);">$i</span><span style="">=</span><span style="color: rgb(204, 102, 204);">0</span><span style="">;</span> <span style="color: rgb(0, 0, 136);">$i</span><span style=""><</span><span style="color: rgb(0, 0, 136);">$how</span><span style="">;</span> <span style="color: rgb(0, 0, 136);">$i</span><span style="">++</span><span style="color: rgb(0, 153, 0);">)</span> <span style="color: rgb(0, 153, 0);">{</span> <span style="color: rgb(0, 0, 136);">$alpha_or_number</span> <span style="">=</span> <span style="color: rgb(153, 0, 0);">mt_rand</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(204, 102, 204);">0</span><span style="">,</span> <span style="color: rgb(204, 102, 204);">1</span><span style="color: rgb(0, 153, 0);">)</span><span style="">;</span> <span style="color: rgb(102, 102, 102); font-style: italic;">//字母还是数字</span> <span style="color: rgb(0, 0, 136);">$str</span> <span style="">=</span> <span style="color: rgb(0, 0, 136);">$alpha_or_number</span> ? <span style="color: rgb(0, 0, 136);">$alpha</span> <span style="">:</span> <span style="color: rgb(0, 0, 136);">$number</span><span style="">;</span> <span style="color: rgb(0, 0, 136);">$which</span> <span style="">=</span> <span style="color: rgb(153, 0, 0);">mt_rand</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(204, 102, 204);">0</span><span style="">,</span> <span style="color: rgb(153, 0, 0);">strlen</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 0, 136);">$str</span><span style="color: rgb(0, 153, 0);">)</span><span style="">-</span><span style="color: rgb(204, 102, 204);">1</span><span style="color: rgb(0, 153, 0);">)</span><span style="">;</span> <span style="color: rgb(102, 102, 102); font-style: italic;">//取哪个字符</span> <span style="color: rgb(0, 0, 136);">$code</span> <span style="">=</span> <span style="color: rgb(153, 0, 0);">substr</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 0, 136);">$str</span><span style="">,</span> <span style="color: rgb(0, 0, 136);">$which</span><span style="">,</span> <span style="color: rgb(204, 102, 204);">1</span><span style="color: rgb(0, 153, 0);">)</span><span style="">;</span> <span style="color: rgb(102, 102, 102); font-style: italic;">//取字符</span> <span style="color: rgb(0, 0, 136);">$j</span> <span style="">=</span> <span style="">!</span><span style="color: rgb(0, 0, 136);">$i</span> ? <span style="color: rgb(204, 102, 204);">4</span> <span style="">:</span> <span style="color: rgb(0, 0, 136);">$j</span><span style="">+</span><span style="color: rgb(204, 102, 204);">15</span><span style="">;</span> <span style="color: rgb(102, 102, 102); font-style: italic;">//绘字符位置</span> <span style="color: rgb(0, 0, 136);">$color3</span> <span style="">=</span> <span style="color: rgb(153, 0, 0);">ImageColorAllocate</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 0, 136);">$im</span><span style="">,</span> <span style="color: rgb(153, 0, 0);">mt_rand</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(204, 102, 204);">0</span><span style="">,</span><span style="color: rgb(204, 102, 204);">100</span><span style="color: rgb(0, 153, 0);">)</span><span style="">,</span> <span style="color: rgb(153, 0, 0);">mt_rand</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(204, 102, 204);">0</span><span style="">,</span><span style="color: rgb(204, 102, 204);">100</span><span style="color: rgb(0, 153, 0);">)</span><span style="">,</span> <span style="color: rgb(153, 0, 0);">mt_rand</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(204, 102, 204);">0</span><span style="">,</span><span style="color: rgb(204, 102, 204);">100</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">)</span><span style="">;</span> <span style="color: rgb(102, 102, 102); font-style: italic;">//字符随即颜色</span> <span style="color: rgb(153, 0, 0);">ImageChar</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 0, 136);">$im</span><span style="">,</span> <span style="color: rgb(0, 0, 136);">$fontsize</span><span style="">,</span> <span style="color: rgb(0, 0, 136);">$j</span><span style="">,</span> <span style="color: rgb(204, 102, 204);">3</span><span style="">,</span> <span style="color: rgb(0, 0, 136);">$code</span><span style="">,</span> <span style="color: rgb(0, 0, 136);">$color3</span><span style="color: rgb(0, 153, 0);">)</span><span style="">;</span> <span style="color: rgb(102, 102, 102); font-style: italic;">//绘字符</span> <span style="color: rgb(0, 0, 136);">$randcode</span> <span style="">.=</span> <span style="color: rgb(0, 0, 136);">$code</span><span style="">;</span> <span style="color: rgb(102, 102, 102); font-style: italic;">//逐位加入验证码字符串</span> <span style="color: rgb(0, 153, 0);">}</span> <span style="color: rgb(102, 102, 102); font-style: italic;">/* * 如果需要添加干扰就将注释去掉 * * 以下for()循环为绘背景干扰线代码 */</span> <span style="color: rgb(102, 102, 102); font-style: italic;">/* + -------------------------------绘背景干扰线 开始-------------------------------------------- + */</span> <span style="color: rgb(177, 177, 0);">for</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 0, 136);">$i</span><span style="">=</span><span style="color: rgb(204, 102, 204);">0</span><span style="">;</span> <span style="color: rgb(0, 0, 136);">$i</span><span style=""><</span><span style="color: rgb(204, 102, 204);">5</span><span style="">;</span> <span style="color: rgb(0, 0, 136);">$i</span><span style="">++</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(102, 102, 102); font-style: italic;">//绘背景干扰线</span> <span style="color: rgb(0, 153, 0);">{</span> <span style="color: rgb(0, 0, 136);">$color1</span> <span style="">=</span> <span style="color: rgb(153, 0, 0);">ImageColorAllocate</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 0, 136);">$im</span><span style="">,</span> <span style="color: rgb(153, 0, 0);">mt_rand</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(204, 102, 204);">0</span><span style="">,</span><span style="color: rgb(204, 102, 204);">255</span><span style="color: rgb(0, 153, 0);">)</span><span style="">,</span> <span style="color: rgb(153, 0, 0);">mt_rand</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(204, 102, 204);">0</span><span style="">,</span><span style="color: rgb(204, 102, 204);">255</span><span style="color: rgb(0, 153, 0);">)</span><span style="">,</span> <span style="color: rgb(153, 0, 0);">mt_rand</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(204, 102, 204);">0</span><span style="">,</span><span style="color: rgb(204, 102, 204);">255</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">)</span><span style="">;</span> <span style="color: rgb(102, 102, 102); font-style: italic;">//干扰线颜色</span> <span style="color: rgb(153, 0, 0);">ImageArc</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 0, 136);">$im</span><span style="">,</span> <span style="color: rgb(153, 0, 0);">mt_rand</span><span style="color: rgb(0, 153, 0);">(</span><span style="">-</span><span style="color: rgb(204, 102, 204);">5</span><span style="">,</span><span style="color: rgb(0, 0, 136);">$w</span><span style="color: rgb(0, 153, 0);">)</span><span style="">,</span> <span style="color: rgb(153, 0, 0);">mt_rand</span><span style="color: rgb(0, 153, 0);">(</span><span style="">-</span><span style="color: rgb(204, 102, 204);">5</span><span style="">,</span><span style="color: rgb(0, 0, 136);">$h</span><span style="color: rgb(0, 153, 0);">)</span><span style="">,</span> <span style="color: rgb(153, 0, 0);">mt_rand</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(204, 102, 204);">20</span><span style="">,</span><span style="color: rgb(204, 102, 204);">300</span><span style="color: rgb(0, 153, 0);">)</span><span style="">,</span> <span style="color: rgb(153, 0, 0);">mt_rand</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(204, 102, 204);">20</span><span style="">,</span><span style="color: rgb(204, 102, 204);">200</span><span style="color: rgb(0, 153, 0);">)</span><span style="">,</span> <span style="color: rgb(204, 102, 204);">55</span><span style="">,</span> <span style="color: rgb(204, 102, 204);">44</span><span style="">,</span> <span style="color: rgb(0, 0, 136);">$color1</span><span style="color: rgb(0, 153, 0);">)</span><span style="">;</span> <span style="color: rgb(102, 102, 102); font-style: italic;">//干扰线</span> <span style="color: rgb(0, 153, 0);">}</span> <span style="color: rgb(102, 102, 102); font-style: italic;">/* + -------------------------------绘背景干扰线 结束-------------------------------------- + */</span> <span style="color: rgb(102, 102, 102); font-style: italic;">/* * 如果需要添加干扰就将注释去掉 * * 以下for()循环为绘背景干扰点代码 */</span> <span style="color: rgb(102, 102, 102); font-style: italic;">/* + --------------------------------绘背景干扰点 开始------------------------------------------ + */</span> <span style="color: rgb(177, 177, 0);">for</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 0, 136);">$i</span><span style="">=</span><span style="color: rgb(204, 102, 204);">0</span><span style="">;</span> <span style="color: rgb(0, 0, 136);">$i</span><span style=""><</span><span style="color: rgb(0, 0, 136);">$how</span><span style="">*</span><span style="color: rgb(204, 102, 204);">40</span><span style="">;</span> <span style="color: rgb(0, 0, 136);">$i</span><span style="">++</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(102, 102, 102); font-style: italic;">//绘背景干扰点</span> <span style="color: rgb(0, 153, 0);">{</span> <span style="color: rgb(0, 0, 136);">$color2</span> <span style="">=</span> <span style="color: rgb(153, 0, 0);">ImageColorAllocate</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 0, 136);">$im</span><span style="">,</span> <span style="color: rgb(153, 0, 0);">mt_rand</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(204, 102, 204);">0</span><span style="">,</span><span style="color: rgb(204, 102, 204);">255</span><span style="color: rgb(0, 153, 0);">)</span><span style="">,</span> <span style="color: rgb(153, 0, 0);">mt_rand</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(204, 102, 204);">0</span><span style="">,</span><span style="color: rgb(204, 102, 204);">255</span><span style="color: rgb(0, 153, 0);">)</span><span style="">,</span> <span style="color: rgb(153, 0, 0);">mt_rand</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(204, 102, 204);">0</span><span style="">,</span><span style="color: rgb(204, 102, 204);">255</span><span style="color: rgb(0, 153, 0);">)</span><span style="color: rgb(0, 153, 0);">)</span><span style="">;</span> <span style="color: rgb(102, 102, 102); font-style: italic;">//干扰点颜色</span> <span style="color: rgb(153, 0, 0);">ImageSetPixel</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 0, 136);">$im</span><span style="">,</span> <span style="color: rgb(153, 0, 0);">mt_rand</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(204, 102, 204);">0</span><span style="">,</span><span style="color: rgb(0, 0, 136);">$w</span><span style="color: rgb(0, 153, 0);">)</span><span style="">,</span> <span style="color: rgb(153, 0, 0);">mt_rand</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(204, 102, 204);">0</span><span style="">,</span><span style="color: rgb(0, 0, 136);">$h</span><span style="color: rgb(0, 153, 0);">)</span><span style="">,</span> <span style="color: rgb(0, 0, 136);">$color2</span><span style="color: rgb(0, 153, 0);">)</span><span style="">;</span> <span style="color: rgb(102, 102, 102); font-style: italic;">//干扰点</span> <span style="color: rgb(0, 153, 0);">}</span> <span style="color: rgb(102, 102, 102); font-style: italic;">/* + --------------------------------绘背景干扰点 结束------------------------------------------ + */</span> <span style="color: rgb(102, 102, 102); font-style: italic;">//把验证码字符串写入session 方便提交登录信息时检验验证码是否正确 例如:$_POST['randcode'] = $_SESSION['randcode']</span> <span style="color: rgb(0, 0, 136);">$_SESSION</span><span style="color: rgb(0, 153, 0);">[</span><span style="color: rgb(0, 0, 136);">$word</span><span style="color: rgb(0, 153, 0);">]</span> <span style="">=</span> <span style="color: rgb(0, 0, 136);">$randcode</span><span style="">;</span> <span style="color: rgb(102, 102, 102); font-style: italic;">/*绘图结束*/</span> <span style="color: rgb(153, 0, 0);">Imagegif</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 0, 136);">$im</span><span style="color: rgb(0, 153, 0);">)</span><span style="">;</span> <span style="color: rgb(153, 0, 0);">ImageDestroy</span><span style="color: rgb(0, 153, 0);">(</span><span style="color: rgb(0, 0, 136);">$im</span><span style="color: rgb(0, 153, 0);">)</span><span style="">;</span> <span style="color: rgb(102, 102, 102); font-style: italic;">/*绘图结束*/</span> <span style="color: rgb(0, 153, 0);">}</span></pre> </div>
试试其它关键字
生成验证码图片
同语言下
.
用net匹配并替换iOS标准的emoji表情符号
.
处理带Emoji表情的的字符串
.
获取微信昵称时 过滤特殊字符
.
通过判断上传文件的头字符来判断文件的类型
.
模拟百度URL加密解密算法
.
以太坊检查地址是否合法
.
实现crontab解析类
.
获取每个月的开始和结束时间
.
图片上传工具类
.
APP手机应用信息采集
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
Dezai.CN
贡献的其它代码
(
4037
)
.
多线程Socket服务器模块
.
生成随机密码
.
清除浮动样式
.
弹出窗口居中
.
抓取url的函数
.
使用base HTTP验证
.
div模拟iframe嵌入效果
.
通过header转向的方法
.
Session操作类
.
执行sqlite输入插入操作后获得自动编号的ID
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3