PHP简单验证码类:字母+数字 字体随机扭曲
现在各式各样的验证码,个人认为验证码是让用户看的,所以简单就好。什么干扰码,倾斜,复杂的背景 都是对用户的一种折磨。
看了一些比较大的体验比较好的网站验证码都较为简单,没有复杂的背景,没有干扰码,没有背景。
有什么地方写的不好的欢迎大家批评,指点。
<?phpif (!defined('IS_INITPHP')) exit('Access Denied!');/********************************************************************************* * InitPHP 2.0 国产PHP开发框架 扩展类库-验证码*-------------------------------------------* 版权所有: CopyRight By initphp.com* 您可以自由使用该源码,但是在使用过程中,请保留作者信息。尊重他人劳动成果就是尊重自己*-------------------------------------------* $Author:liuxinming* $Dtime:2012-10-09***********************************************************************************/class seccodeInit{ private $width; private $height; private $type=0;// 0 字母+数字验证码 private $time=3000;//验证码过期时间(s) private $color=null;//验证码字体颜色 private $im; private $length=4;//验证码长度 private $warping;//随机扭曲 /** * 获取随机数值 * @return string */ private function get_random_val() { $i=0; while($i<$this->length) { mt_srand((double)microtime()*1000000); $randnum=mt_rand(50,90); if(!in_array($randnum,array(58,59,60,61,62,63,64,73,79))) { $authnum=$authnum.chr($randnum); $i++; } } session_start(); $time=time(); $checkcode=md5(md5($authnum.'initphpYzmsy'.$time)); $key=$time.','.$checkcode.','.authnum; $_SESSION['initphp_code'] = $key; return $authnum; } /** * 获取验证码图片 * @param $width 宽 * @param $height 高 * @param $warping 字体随机扭曲开关 0=关,1=开 * @return string */ public function getcode($width=140,$height=40,$warping=0){ $this->width=$width; $this->height=$height; $this->warping=$warping; if($this->typeimage(); } } /** * 生成图片验证码 * @return string */ public function image(){ $this->im=imagecreate($this->width, $this->height);//设置图片背景大小 imagecolorallocate($this->im, 243, 251, 254);// 设置背景 $this->color=imagecolorallocate($this->im, mt_rand(1,120), mt_rand(1,120), mt_rand(1,120));// 验证码字体随机颜色 $ttfPath = dirname(__FILE__) . '/font/';//字体目录 $dirs = opendir($ttfPath); $seccodettf = array(); while($entry = readdir($dirs)) { if($entry != '.' && $entry != '..' && in_array(strtolower(addslashes(strtolower(substr(strrchr($entry, '.'), 1, 10)))), array('ttf', 'ttc'))) { $seccodettf[] = $ttfPath.$entry; } } $ttf = $seccodettf[array_rand($seccodettf)];//随机一种字体 $size = $this->type ? $this->width / 7 : $this->width / 6;//字体大小 imagettftext($this->im,$size, 0, 10, $size*1.2, $this->color, $ttf, $this->get_random_val());//设置验证码字符 if($this->warping){//随机扭曲 $this->setWarping(); } if(function_exists("imagepng")) { header ("Content-type: image/png"); $code=imagepng($this->im); }elseif (function_exists("imagejpeg")) { header ("Content-type: image/jpeg"); $code=imagejpeg($this->im); }elseif (function_exists("imagegif")) { header("Content-type: image/gif"); $code=imagegif($this->im); } imagedestroy($this->im); return $code; } /** * 检查验证码 * @param $code * @return bool */ public function checkCode($code) { session_start(); $secode=explode(',', $_SESSION['initphp_code']); $time=time(); //检查时间是否过期 if($secode[0]>$time||$time-$secode[0]>$this->time) { return false; } //验证码密钥 双md5 后是否一致 if($secode[1]md5(md5($code.'initphpYzmsy'.$secode[0]))){ return false; } //检查验证码字符串是否一致 if($code||$code$secode[2]) { return false; } return true; } /*随机扭曲*/ public function setWarping(){ $rgb=array(); $direct=rand(0,1); $width = imagesx($this->im); $height = imagesy($this->im); $level=$width /20; for($j = 0;$j im, $i , $j); } for($i = 0;$i im, $i + $r , $j , $rgb[$i]); } } }}?>
效果:

PHP在現代編程中仍然是一個強大且廣泛使用的工具,尤其在web開發領域。 1)PHP易用且與數據庫集成無縫,是許多開發者的首選。 2)它支持動態內容生成和麵向對象編程,適合快速創建和維護網站。 3)PHP的性能可以通過緩存和優化數據庫查詢來提升,其廣泛的社區和豐富生態系統使其在當今技術棧中仍具重要地位。

在PHP中,弱引用是通過WeakReference類實現的,不會阻止垃圾回收器回收對象。弱引用適用於緩存系統和事件監聽器等場景,需注意其不能保證對象存活,且垃圾回收可能延遲。

\_\_invoke方法允許對象像函數一樣被調用。 1.定義\_\_invoke方法使對象可被調用。 2.使用$obj(...)語法時,PHP會執行\_\_invoke方法。 3.適用於日誌記錄和計算器等場景,提高代碼靈活性和可讀性。

Fibers在PHP8.1中引入,提升了並發處理能力。 1)Fibers是一種輕量級的並發模型,類似於協程。 2)它們允許開發者手動控制任務的執行流,適合處理I/O密集型任務。 3)使用Fibers可以編寫更高效、響應性更強的代碼。

PHP社區提供了豐富的資源和支持,幫助開發者成長。 1)資源包括官方文檔、教程、博客和開源項目如Laravel和Symfony。 2)支持可以通過StackOverflow、Reddit和Slack頻道獲得。 3)開發動態可以通過關注RFC了解。 4)融入社區可以通過積極參與、貢獻代碼和學習分享來實現。

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP不是在消亡,而是在不斷適應和進化。 1)PHP從1994年起經歷多次版本迭代,適應新技術趨勢。 2)目前廣泛應用於電子商務、內容管理系統等領域。 3)PHP8引入JIT編譯器等功能,提升性能和現代化。 4)使用OPcache和遵循PSR-12標準可優化性能和代碼質量。

PHP的未來將通過適應新技術趨勢和引入創新特性來實現:1)適應云計算、容器化和微服務架構,支持Docker和Kubernetes;2)引入JIT編譯器和枚舉類型,提升性能和數據處理效率;3)持續優化性能和推廣最佳實踐。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3 Linux新版
SublimeText3 Linux最新版

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能