關於Thinkphp3.2的運算型驗證碼的解析
本篇文章主要介绍了Thinkphp3.2实用篇之计算型验证码示例,内容挺不错的,现在分享给大家,也给大家做个参考。
是不是觉得普通的验证码已经没办法满足,接下来介绍如何将tp现有的验证码改为计算型验证码:
首先找到:ThinkPHP\Library\Think\Verify.class.php
在其中加入以下代码:
public function entry_add($id = '') { $this->length='3'; // 图片宽(px) $this->imageW || $this->imageW = $this->length*$this->fontSize*1.5 + $this->length*$this->fontSize/2; // 图片高(px) $this->imageH || $this->imageH = $this->fontSize * 2.5; // 建立一幅 $this->imageW x $this->imageH 的图像 $this->_image = imagecreate($this->imageW, $this->imageH); // 设置背景 imagecolorallocate($this->_image, $this->bg[0], $this->bg[1], $this->bg[2]); // 验证码字体随机颜色 $this->_color = imagecolorallocate($this->_image, mt_rand(1,150), mt_rand(1,150), mt_rand(1,150)); // 验证码使用随机字体 $ttfPath = dirname(__FILE__) . '/Verify/' . ($this->useZh ? 'zhttfs' : 'ttfs') . '/'; if(empty($this->fontttf)){ $dir = dir($ttfPath); $ttfs = array(); while (false !== ($file = $dir->read())) { if($file[0] != '.' && substr($file, -4) == '.ttf') { $ttfs[] = $file; } } $dir->close(); $this->fontttf = $ttfs[array_rand($ttfs)]; } $this->fontttf = $ttfPath . $this->fontttf; if($this->useImgBg) { $this->_background(); } if ($this->useNoise) { // 绘杂点 $this->_writeNoise(); } if ($this->useCurve) { // 绘干扰线 $this->_writeCurve(); } // 绘验证码 $code = array(); // 验证码 $symbol=array('+','-'); $codeNX = 0; // 验证码第N个字符的左边距 $now_symbol=$symbol[rand(0,1)]; for ($i = 0; $i<$this->length; $i++) { if($i==1){ $code[$i] = $now_symbol; $codeNX += mt_rand($this->fontSize*1.2, $this->fontSize*1.6); imagettftext($this->_image, $this->fontSize,0, $codeNX, $this->fontSize*1.6, $this->_color, $ttfPath.'2.ttf', $code[$i]); } else{ $code[$i] = $this->codeSet[mt_rand(0, strlen($this->codeSet)-1)]; $codeNX += mt_rand($this->fontSize*1.2, $this->fontSize*1.6); imagettftext($this->_image, $this->fontSize, mt_rand(-40, 40), $codeNX, $this->fontSize*1.6, $this->_color, $this->fontttf, $code[$i]); } } // 保存验证码 $key = $this->authcode($this->seKey); $str=implode('', $code); eval("\$re=$str;"); $code = $this->authcode($re); $secode = array(); $secode['verify_code'] = $code; // 把校验码保存到session $secode['verify_time'] = NOW_TIME; // 验证码创建时间 session($key.$id, $secode); header('Cache-Control: private, max-age=0, no-store, no-cache, must-revalidate'); header('Cache-Control: post-check=0, pre-check=0', false); header('Pragma: no-cache'); header("content-type: image/png"); // 输出图像 imagepng($this->_image); imagedestroy($this->_image); }
public function check_add($code, $id = '') { $key = $this->authcode($this->seKey).$id; // 验证码不能为空 $secode = session($key); if($code===false || empty($secode)) { return false; } //验证码是否是数字 if(!is_numeric($code)) { return false; } // session 过期 if(NOW_TIME - $secode['verify_time'] > $this->expire) { session($key, null); return false; } if($this->authcode($code) == $secode['verify_code']) { $this->reset && session($key, null); return true; } return false; }
生成方法:
Public function verify(){ import('ORG.Util.Verify'); $Verify = new Verify(); $Verify->useNoise = true; $Verify->codeSet = '0123456789'; $Verify->useCurve = false; $Verify->entry_add(); }
验证方法:
if (!check_verify($verify,'','add')) { $this->error('验证码错误!'); return; }
调用的公共方法:
// 检测输入的验证码是否正确,$code为用户输入的验证码字符串 function check_verify($code, $id = '',$type=''){ import('ORG.Util.Verify'); $verify = new Verify(); if($type='add'){ return $verify->check_add($code, $id); } else{ return $verify->check($code, $id); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
以上是關於Thinkphp3.2的運算型驗證碼的解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱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)

谷歌瀏覽器不顯示驗證碼圖片怎麼辦?在使用Google瀏覽器登入網頁有時候需要驗證碼驗證。部分使用者在使用圖片驗證碼的時候發現Google瀏覽器無法正常顯示圖片的內容。這該怎麼辦呢?下面小編帶來Google瀏覽器驗證碼不顯示處理方法介紹,希望對大家有幫助! 方法介紹 1、進入軟體,點選右上角的「更多」按鈕,選擇下方選項清單中的「設定」進入。 2、進入新介面後,點選左側的「隱私設定與安全性」選項。 3、接著點擊右側中的「網站設定&rdquo

執行 ThinkPHP 專案需要:安裝 Composer;使用 Composer 建立專案;進入專案目錄,執行 php bin/console serve;造訪 http://localhost:8000 查看歡迎頁面。

ThinkPHP 擁有多個版本,針對不同 PHP 版本而設計。主要版本包括 3.2、5.0、5.1 和 6.0,而次要版本用於修復 bug 和提供新功能。目前最新穩定版本為 ThinkPHP 6.0.16。在選擇版本時,需考慮 PHP 版本、功能需求和社群支援。建議使用最新穩定版本以獲得最佳性能和支援。

ThinkPHP Framework 的本機運作步驟:下載並解壓縮 ThinkPHP Framework 到本機目錄。建立虛擬主機(可選),指向 ThinkPHP 根目錄。配置資料庫連線參數。啟動 Web 伺服器。初始化 ThinkPHP 應用程式。存取 ThinkPHP 應用程式 URL 運行。

虛擬號碼可以接收驗證碼,只要註冊時填寫的手機號碼符合規定,並且能夠正常接通手機號,就可以收到簡訊驗證碼。不過,使用虛擬手機號碼要注意,部分網站不支援虛擬手機號碼註冊,因此需要選擇正規的虛擬手機號碼服務商。

Laravel 和 ThinkPHP 框架的效能比較:ThinkPHP 效能通常優於 Laravel,專注於最佳化和快取。 Laravel 性能良好,但對於複雜應用程序,ThinkPHP 可能更適合。

《開發建議:如何利用ThinkPHP框架實現非同步任務》隨著網路技術的快速發展,Web應用程式對於處理大量並發請求和複雜業務邏輯的需求也越來越高。為了提高系統的效能和使用者體驗,開發人員常常會考慮利用非同步任務來執行一些耗時操作,例如發送郵件、處理文件上傳、產生報表等。在PHP領域,ThinkPHP框架作為一個流行的開發框架,提供了一些便捷的方式來實現非同步任務。

ThinkPHP 安裝步驟:準備 PHP、Composer、MySQL 環境。使用 Composer 建立專案。安裝 ThinkPHP 框架及相依性。配置資料庫連線。產生應用程式碼。啟動應用程式並造訪 http://localhost:8000。
