這篇文章主要介紹了關於php實現算術驗證碼的方法,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
最近學了php的圖像函數,也練習的驗證碼的實現,在聽從老師的建議下,自己寫了一個算術驗證碼的函數,第一次自己獨立完成一個小練習,感覺挺開心的.但是,也知道自己的局限,所以特意寫出來,希望各路大神指點一下,能夠更多的拓展自己的視野
#php程式碼如下:實作驗證碼的功能
<?php/** * @param int $width 宽度,默认为120 * @param int $height 高度,默认为50 * @param int $fontSize 字体的大小 * @return 图片资源 */function arithmeticCode($width=120,$height=50,$fontSize=20){ //开启session session_start(); //创建画布 $img = imagecreatetruecolor($width,$height); //分配颜色 $color = imagecolorallocate($img,255,255,255); //填充颜色 imagefill($img,0,0,$color); //干扰点 for ($i = 0;$i < 500;$i++){ $pixColor = imagecolorallocate($img,mt_rand(100,200),mt_rand(100,200),mt_rand(100,200)); imagesetpixel($img,mt_rand(0,$width),mt_rand(0,$height),$pixColor); } //干扰线 for ($i = 0;$i < 4;$i++){ $lineColor = imagecolorallocate($img,mt_rand(0,120),mt_rand(0,120),mt_rand(0,120)); imageline($img,mt_rand(0,$width),mt_rand(0,$height),mt_rand(0,$width),mt_rand(0,$height),$lineColor); } //定义一个数组存放运算符号 $arr = ['+','-','*']; //计算数组的长度 $len = count($arr); //定义一个1到20的数组 $num = range(1,20); $numLen = count($num); //定义一个空数组来存放随机取得的验证码 $code = []; for ($i = 0;$i < $len;$i++) { if ($i == 1) { $code[] = $arr[mt_rand(0,$len-1)]; }else { $code[] = $num[mt_rand(0,$numLen-1)]; } } $str = implode($code);//将数组转为字符串 $textColor = imagecolorallocate($img,mt_rand(100,200),mt_rand(100,200),mt_rand(100,200)); $fontAngle = 0; $x = ($width - $fontSize*3)/2; $y = ($height - $fontSize) / 2 + $fontSize; imagettftext($img,$fontSize,$fontAngle,$x,$y,$textColor,"./img/msyh.ttc",$str); $res = getRes($code); //将函数存放在session中 $_SESSION['res'] = $res; //输出图片 header("content-type:image/png"); imagepng($img); }/** * @param $arr 一个包含运算符号的数组 * @return 返回一个运算结果 */function getRes($arr) { $sum = 0; //判断数组元素下标为1的运算符号是什么 switch ($arr[1]){ case '+': $sum = $arr[0] + $arr[2]; break; case '-': $sum = $arr[0] - $arr[2]; break; case '*': $sum = $arr[0] * $arr[2]; break; } return $sum; }//调用函数arithmeticCode(100,40,18);
html的部分程式碼
<!doctype html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> img { position: relative; top: 20px; } </style></head><body><form action="test.php"> 验证码 <input type="text" name="code"> <img src="/static/imghwm/default1.png" data-src="./demo5.php" class="lazy" alt="点击刷新"> <br> <button>提交</button></form></body></html><script> //实现点击图片刷新验证码的功能 var img = document.querySelector("img"); img.onclick = function () { this.src = this.src+"?m="+Math.random(); }</script>
#test.php的測試
<?phpsession_start();$res = $_SESSION['res'];$value = $_GET['code'];if ($res == $value) { echo "test success"; }else{ echo "test fail"; }
以上就是我的程式碼組成.
希望各路大神不吝賜教[期待臉]
以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!
相關推薦:
以上是php實作算術驗證碼的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

随着互联网应用的普及,网站响应速度越来越成为用户关注的重点。为了快速响应用户的请求,网站往往采用缓存技术缓存数据,从而减少数据库查询次数。但是,缓存的过期时间对响应速度有着重要影响。本文将对控制缓存失效时间的方法进行探讨,以帮助PHP开发者更好地应用缓存技术。一、什么是缓存失效时间?缓存失效时间是指缓存中的数据被认为已经过期的时间。它决定了缓存中的数据何时需

PHP数据缓存的一致性哈希算法实现原理一致性哈希算法(ConsistentHashing)是一种常用于分布式系统中数据缓存的算法,可以在系统扩展和缩减时,最小化数据迁移的数量。在PHP中,实现一致性哈希算法可以提高数据缓存的效率和可靠性,本文将介绍一致性哈希算法的原理,并提供代码示例。一致性哈希算法的基本原理传统的哈希算法将数据分散到不同的节点上,但当节点

如何使用PHP实现移动端适配和响应式设计移动端适配和响应式设计是现代网站开发中重要的实践,它们能够保证网站在不同设备上的良好展示效果。在本文中,我们将介绍如何使用PHP实现移动端适配和响应式设计,并附带代码示例。一、理解移动端适配和响应式设计的概念移动端适配是指根据设备的不同特性和尺寸,针对不同的设备提供不同的样式和布局。而响应式设计则是指通过使用

随着微信小程序的不断发展,越来越多的用户开始选择微信小程序进行登陆。为了提高用户的登录体验,微信小程序开始支持指纹登陆。在本文中,我们将会介绍如何使用PHP来实现微信小程序的指纹登陆。一、了解微信小程序的指纹登陆在微信小程序的基础上,开发者可以使用微信的指纹识别功能,让用户通过指纹登陆微信小程序,从而提高登录体验的安全性和便捷性。二、准备工作在使用PHP实现

PHP实现的在线投票系统的用户隐私保护随着互联网的发展和普及,越来越多的投票活动开始转移到在线平台上进行。在线投票系统的便利性给用户带来了很多好处,但同时也引发了用户隐私泄露的担忧。隐私保护已经成为在线投票系统设计中的一个重要方面。本文将介绍如何使用PHP编写一个在线投票系统,并重点讨论用户隐私保护的问题。在设计和开发在线投票系统时,需要遵循以下几个原则来保

随着移动互联网的快速发展,微信小程序越来越受到广大用户的青睐,而PHP作为一种强大的编程语言,在小程序开发过程中也发挥着重要的作用。本文将介绍PHP实现微信小程序操作流程图的技巧。获取access_token在使用微信小程序开发过程中,首先需要获取access_token,它是实现微信小程序操作的重要凭证。在PHP中获取access_token的代码如下:f

随着小程序的广泛应用,越来越多的开发者需要将其与后台服务器进行数据交互,其中最常见的业务场景之一就是上传文件。本文将介绍在小程序中实现文件上传的PHP后台实现方法。一、小程序中的文件上传在小程序中实现文件上传,主要依赖于小程序APIwx.uploadFile()。该API接受一个options对象作为参数,其中包含了要上传的文件路径、需要传递的其他数据以及

如何使用PHP实现密码找回功能密码是我们在线生活中的重要保护手段,但有时我们可能会忘记密码,特别是在拥有多个在线账号的情况下。为了帮助用户找回密码,许多网站都提供了密码找回功能。本文将介绍如何使用PHP来实现密码找回功能,并提供相关的代码示例。创建数据库表首先,我们需要创建一个数据库表来存储用户的相关信息,包括用户名、邮箱和密码找回的临时令牌等等。下面是一个


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),