PHP5 GD库生成图形验证码(汉字)
1,利用GD库函数生成图片,并在图片上写指定字符
imagecreatetruecolor 新建一个真彩色图像
imagecolorallocate 为一幅图像分配颜色(调色板)
imagestring 绘制字符
imageline 绘制线条
imagesetpixel 打像素点
2,输出图片
imagejpeg($img);
PHP实现过程,代码中注释详细,这里不做过多解释
verify.php
<?<span php </span><span //</span><span 1.qi启用gd库GD库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片。 // 在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据生成报表。 //by www.jbxue.com 2013-7-30</span> <span session_start</span><span (); </span><span //</span><span 把GBK编码的字符串转换成UTF-8字符串,第一个参数之所以写GBK,是因为本php文件在主机中存储的编码是GBK编码 // UTF-8编码浏览器普遍支持,通用性强,这里就转换成UTF-8</span> <span $str</span> = <span iconv</span>("GBK", "utf-8", "芸芸众生绿水青山名胜古迹敞开心胸便会云蒸霞蔚快乐将永远伴随着你"<span ); </span><span if</span>(!<span is_string</span>(<span $str</span>) || !mb_check_encoding(<span $str</span>,"utf-8"<span )) { </span><span exit</span>("不是字符串或者不是utf-8"<span ); } </span><span $zhongwenku_size</span><span ; </span><span //</span><span 按UTF-8编码方式获取字符串的长度</span> <span $zhongwenku_size</span> = mb_strlen(<span $str</span>,"UTF-8"<span ); </span><span //</span><span 把上述字符导入数组中</span> <span $zhongwenku</span> = <span array</span><span (); </span><span for</span>( <span $i</span>=0; <span $i</span><<span $zhongwenku_size</span>; <span $i</span>++<span ) { </span><span $zhongwenku</span>[<span $i</span>] = mb_substr(<span $str</span>, <span $i</span>,1,"UTF-8"<span ); } </span><span $result</span> = ""<span ; </span><span //</span><span 图片上要写入的四个字符</span> <span for</span>(<span $i</span>=0; <span $i</span><4; <span $i</span>++<span ) { </span><span switch</span> (<span rand</span>(0, 1<span )) { </span><span case</span> 0: <span $result</span>.=<span $zhongwenku</span>[<span rand</span>(0, <span $zhongwenku_size</span>-1<span )]; </span><span break</span><span ; </span><span case</span> 1: <span $result</span>.=<span dechex</span>(<span rand</span>(0,15<span )); </span><span break</span><span ; } } </span><span $_SESSION</span>["check"] = <span $result</span><span ; </span><span //</span><span 创建一个真彩图片 宽100,高30</span> <span $img</span> = imagecreatetruecolor(100, 30<span ); </span><span //</span><span 分配背景颜色</span> <span $bg</span> = imagecolorallocate(<span $img</span>, 0, 0, 0<span ); </span><span //</span><span 分配文字颜色</span> <span $te</span> = imagecolorallocate(<span $img</span>, 255,255,255<span ); </span><span //</span><span 在图片上写字符串 //imagestring($img, rand(3,8), rand(1,70), rand(1,10), $result, $te); // 在图片上根据载入字体可以写出特殊字体</span> imagettftext(<span $img</span>, 13, <span rand</span>(2, 9), 20 ,20, <span $te</span>, "MSYH.TTF",<span $result</span><span ); </span><span $_SESSION</span>["check"] = <span $result</span><span ; </span><span for</span>(<span $i</span>=0; <span $i</span><3; <span $i</span>++<span ) { </span><span //</span><span $t = imagecolorallocate($img, rand(0, 255),rand(0, 255),rand(0, 255)); // 画线</span> imageline(<span $img</span>, 0, <span rand</span>(0, 20), <span rand</span>(70,100), <span rand</span>(0, 20), <span $te</span><span ); } </span><span $t</span> = imagecolorallocate(<span $img</span>, <span rand</span>(0, 255),<span rand</span>(0, 255),<span rand</span>(0, 255<span )); </span><span //</span><span 为图片添加噪点</span> <span for</span>(<span $i</span>=0; <span $i</span><200; <span $i</span>++<span ) { imagesetpixel(</span><span $img</span>, <span rand</span>(1, 100), <span rand</span>(1, 30), <span $t</span><span ); } </span><span //</span><span 发送http头信息 指定本次发送的是image中的jpeg</span> <span header</span>("Content-type: image/jpeg"<span ); </span><span //</span><span 输出jpeg图片至浏览器</span> imagejpeg(<span $img</span><span ); </span>?>
<?<span php </span><span //</span><span 提交页面 //by www.jbxue.com</span> <span session_start</span><span (); </span><span if</span>(@<span $_POST</span>['check'<span ]) { </span><span if</span>(<span $_POST</span>["check"] == <span $_SESSION</span>["check"<span ]) { </span><span echo</span>" 恭喜你!验证码输入正确!"<span ; }</span><span else</span><span { </span><span echo</span>" 不好意思验证码输入错误"<span ; } } </span>?> <form action="" method="post"> <img src="/static/imghw/default1.png" data-src="verify.php" class="lazy"/ alt="PHP5 GD库生成图形验证码(汉字)" > </br> <input type="text" name="check"></br> <input type="submit" value="submit"></br> </form>

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Go語言提供了兩種動態函數創建技術:closures和反射。 closures允許存取閉包作用域內的變量,而反射可使用FuncOf函數建立新函數。這些技術在自訂HTTP路由器、實現高度可自訂的系統和建置可插拔的元件方面非常有用。

在C++函數命名中,考慮參數順序至關重要,可提高可讀性、減少錯誤並促進重構。常見的參數順序約定包括:動作-物件、物件-動作、語意意義和遵循標準函式庫。最佳順序取決於函數目的、參數類型、潛在混淆和語言慣例。

1. SUM函數,用於對一列或一組單元格中的數字進行求和,例如:=SUM(A1:J10)。 2、AVERAGE函數,用於計算一列或一組儲存格中的數字的平均值,例如:=AVERAGE(A1:A10)。 3.COUNT函數,用於計算一列或一組單元格中的數字或文字的數量,例如:=COUNT(A1:A10)4、IF函數,用於根據指定的條件進行邏輯判斷,並返回相應的結果。

C++函數中預設參數的優點包括簡化呼叫、增強可讀性、避免錯誤。缺點是限制靈活性、命名限制。可變參數的優點包括無限彈性、動態綁定。缺點包括複雜性更高、隱式型別轉換、除錯困難。

自訂PHP函數與預定義函數的差異在於:作用域:自訂函數僅限於其定義範圍,而預定義函數可在整個腳本中存取。定義方式:自訂函數使用function關鍵字定義,而預先定義函數則由PHP核心定義。參數傳遞:自訂函數接收參數,而預先定義函數可能不需要參數。擴充性:自訂函數可以根據需要創建,而預定義函數是內建的且無法修改。

C++中的異常處理可透過自訂異常類別增強,提供特定錯誤訊息、上下文資訊以及根據錯誤類型執行自訂操作。定義繼承自std::exception的異常類,提供特定的錯誤訊息。使用throw關鍵字拋出自訂異常。在try-catch區塊中使用dynamic_cast將捕獲到的異常轉換為自訂異常類型。在實戰案例中,open_file函數會拋出FileNotFoundException異常,捕捉並處理該異常可提供更具體的錯誤訊息。

C++函數中的引用參數(本質為變數別名,修改引用修改原始變數)和指標參數(儲存原始變數的記憶體位址,透過解引用指標修改變數)在傳遞和修改變數時有著不同的用法。引用參數常用於修改原始變數(尤其是大型結構體),傳遞給建構子或賦值運算子時避免複製開銷。指標參數則用於靈活指向記憶體位置,實現動態資料結構或傳遞空指標表示可選參數。
