PHP實現的封裝驗證碼類詳解
類名: validationcode.class.php
程式碼如下:
程式碼如下:
<?php
class ValidationCode {
private $width;
private $height;
private $codeNum;
private $image; //影象資源
private $disturbColorNum;
private $checkCode;
function __construct($width=80, $height=20, $codeNum=4){
$this->width=$width;
$this->height=$height;
$this->codeNum=$codeNum;
$this->checkCode=$this->createCheckCode();
$number=floor($width*$height/15);
if($number > 240-$codeNum){
$this->disturbColorNum= 240-$codeNum;
}else{
$this->disturbColorNum=$number;
}
}
//通過訪問該方法向瀏覽器中輸出影象
function showImage($fontFace=""){
//第一步:建立影象背景
$this->createImage();
//第二步:設定干擾元素
$this->setDisturbColor();
//第三步:向影象中隨機畫出文字
$this->outputText($fontFace);
//第四步:輸出影象
$this->outputImage();
}
//通過呼叫該方法獲取隨機建立的驗證碼字串
function getCheckCode(){
return $this->checkCode;
}
private function createImage(){
//建立影象資源
$this->image=imagecreatetruecolor($this->width, $this->height);
//隨機背景色
$backColor=imagecolorallocate($this->image, rand(225, 255), rand(225,255), rand(225, 255));
//為背景添充顏色
imagefill($this->image, 0, 0, $backColor);
//設定邊框顏色
$border=imagecolorallocate($this->image, 0, 0, 0);
//畫出矩形邊框
imagerectangle($this->image, 0, 0, $this->width-1, $this->height-1, $border);
}
private function setDisturbColor(){
for($i=0; $i<$this->disturbColorNum; $i++){
$color=imagecolorallocate($this->image, rand(0, 255), rand(0, 255), rand(0, 255));
imagesetpixel($this->image, rand(1, $this->width-2), rand(1, $this->height-2), $color);
}
for($i=0; $i<10; $i++){
$color=imagecolorallocate($this->image, rand(200, 255), rand(200, 255), rand(200, 255));
imagearc($this->image, rand(-10, $this->width), rand(-10, $this->height), rand(30, 300), rand(20, 200), 55, 44, $color);
}
}
private function createCheckCode(){
//這裡主要產生隨機碼,從2開始是為了區分1和l
$code="23456789abcdefghijkmnpqrstuvwxyzABCDEFGHIJKMNPQRSTUVWXYZ";
$string='';
for($i=0; $i < $this->codeNum; $i++){
$char=$code{rand(0, strlen($code)-1)};
$string.=$char;
}
return $string;
}
private function outputText($fontFace=""){
for($i=0; $i<$this->codeNum; $i++){
$fontcolor=imagecolorallocate($this->image, rand(0, 128), rand(0, 128), rand(0, 128));
if($fontFace==""){
$fontsize=rand(3, 5);
$x=floor($this->width/$this->codeNum)*$i+3;
$y=rand(0, $this->height-15);
imagechar($this->image,$fontsize, $x, $y, $this->checkCode{$i},$fontcolor);
}else{
$fontsize=rand(12, 16);
$x=floor(($this->width-8)/$this->codeNum)*$i+8;
$y=rand($fontSize+5, $this->height);
imagettftext($this->image,$fontsize,rand(-30, 30),$x,$y ,$fontcolor, $fontFace, $this->checkCode{$i});
}
}
}
private function outputImage() {
if(imagetypes() & IMG_GIF){
imagepng($this->image);
}else if(imagetypes() & IMG_JPG){
header("Content-Type:image/jpeg");
imagepng($this->image);
}else if(imagetypes() & IMG_PNG){
header("Content-Type:image/png");
imagepng($this->image);
}else if(imagetypes() & IMG_WBMP){
header("Content-Type:image/vnd.wap.wbmp");
imagepng($this->image);
}else{
die("PHP不支援影象建立");
}
}
function __destruct(){
imagedestroy($this->image);
}
}
使用如下:
測試,呼叫驗證碼類
程式碼如下:
<?php
session_start();
include "validationcode.class.php";
$code=new ValidationCode(80, 20, 4);
$code->showImage(); //輸出到頁面中供 註冊或登入使用
$_SESSION["code"]=$code->getCheckCode(); //將驗證碼儲存到伺服器中
相關推薦
PHP實現的封裝驗證碼類詳解
用PHP寫一個驗證碼類,並進行封裝。類名: validationcode.class.php程式碼如下: 程式碼如下: <?php class ValidationCode { private $width; private $height; private $codeNum; pri
php實現圖形驗證碼詳解!
最近由於專案需要,圖形驗證碼,就寫了一個,為大家詳細介紹下實現過程! 1、驗證碼封裝實現方法 //生成驗證碼 public function get_img_code(){ ob_clean(); cookie('code',NULL); session('code',NU
實現圖片驗證碼類 PHP
-type cli ont eat edi doc out text src 封裝一個圖片驗證碼類 <?php class Captcha{ private $img; private $imgX; private $imgY; pr
驗證碼原理詳解與案例
剩下的細節問題還有: 1,驗證碼如何加噪成圖片 2,服務端如何維護驗證碼 案例程式碼在:https://github.com/yejingtao/forblog/tree/master/demo-securityCode 核心程式碼詳解: 前端: <!DOCTYPE html> <ht
PHP實現帶有驗證碼的登陸註冊
開發工具 Wampserver WampServer就是Windows下 Apache+Mysql+PHP整合安裝環境,即在window下的apache、php和mysql的伺服器軟體,通俗的說,就是它集成了php開發所需要的資料庫軟體,伺
PHP實現簡訊驗證碼
手機驗證碼流程: 獲取手機驗證碼事件:正則驗證手機號,將手機號碼和驗證碼作為引數非同步訪問手機驗證碼ajax頁面 手機驗證碼ajax頁面:驗證驗證碼,生成手機驗證碼,生成流水號,引用介面頁面傳送驗證碼,如果成功則將驗證碼資訊寫入資料庫 註冊按鈕事件:將手機號和手機驗證
php實現驗證碼類
<?php class Code{ // 1. 定義各個成員 有寬、高、畫布、字數、型別、畫型別 private $width ; //
實現高性能糾刪碼引擎 | 糾刪碼技術詳解(下)
糾刪碼引擎 基礎知識 深入優化 技術 工程師 作者介紹: 徐祥曦,七牛雲工程師,獨立開發了多套高性能糾刪碼/再生碼編碼引擎。柳青,華中科技大學博士,研究方向為基於糾刪碼的分布式存儲系統。前言:在上篇《如何選擇糾刪碼編碼引擎》中,我們簡單了解了 Reed-Solomon Codes(RS 碼
建立一個漂亮的PHP驗證碼類文件及調用方式
去掉 -1 cti elephant orm random 上一個 ott 狀態 //驗證碼類class ValidateCode { private $charset = ‘abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ2345678
php文件上傳原理詳解(含源碼)
輸入數據 最大值 cut 產生 har 默認值 接受 上傳文件 tle 1、文件上傳原理 將客戶端的文件上傳到服務器,再將服務器的臨時文件上傳到指定目錄 2、客戶端配置 提交表單 表單的發送方式為post 添加enctype="multipart/form-data"
PHP驗證碼類
abcdefg creat fig tutorial n) getc images wid 驗證碼類 class Captcha{ //驗證碼寬 private $width; //驗證碼高度 private $height; //驗
PHP命名空間與自動加載類詳解
命名 ech stat 自動 spl pla 空間 程序設計 php面向對象 本文實例講述了PHP命名空間與自動加載類。分享給大家供大家參考,具體如下:今天我要給大家介紹的是PHP的命名空間 和 自動加載類我先簡單的分開演示 在放在一起大家請看:什麽是自動加載類?想必大家都
簡單實用的PHP驗證碼類
最近在學習php。實現了一個簡單的驗證碼類,僅供參考。記得自己的PHP環境得有GD庫。 先上效果圖: 圖一 圖二 <?php /** * 驗證碼類 */ class Code { // 驗證碼個數 protected $num
php+mysql實現簡訊驗證碼功能
class Sms { const EXPIRE_SEC = 300; // 過期時間間隔 5分鐘 const RESEND_SEC = 60; // 重發時間間隔 const ONE_DAY_FREQ = 10; // 每日向同一個手機號發簡訊的次數
C++中string類詳解(轉載)(最下面有程式碼實現)
作者:yzl_rex 來源:CSDN 原文:https://blog.csdn.net/yzl_rex/article/details/7839379 要想使用標準C++中string類,必須要包含 #include < string>// 注意是< string>
利用PHP 簡單實現加減法驗證碼
<?php header('Content-Type: image/png'); $im = imagecreatetruecolor( 200 , 50 );//生成圖片長寬 // Create some colors $white = imagecolorallocate(
藉助CountDownTimer類實現獲取驗證碼倒計時按鈕
咱們中國人做事情講究吉利,我也不例外,所以就選今天這個良辰吉日來寫出自己的第一篇部落格文章吧! 一、引言 我們經常在電視中看到發生衛星的場景,大家都知道會有人在喊倒計時“5,4,3,2,1,發射!”,這個時候衛星就點火發射了。其實這些都是已經在程式當中寫好
Scala集合特質繼承體系、定義方法與主要實現類詳解
目錄 一. 架構 二. Traversable 三. Iterable 1. Seq 1.1 緩衝器 2. Set 2.1 SortedSet 2.2 Bitset 3. Map 3.1 ListMap 四. 不可變Seq實體類 1. Lis
php生成驗證碼類
php生成驗證碼類 直接看程式碼 <?php session_start(); class Code{ //資源 private $img; //畫布寬度 private $width=100; //畫布高度
PHP檔案上傳操作例項詳解(包含上傳檔案型別MIME驗證)
本文例項分析了PHP檔案上傳操作。分享給大家供大家參考,具體如下: 檔案上傳 發生在瀏覽器向伺服器發出的請求中。 檔案,對於瀏覽器來講,就是表單中的一個特殊型別的資料而已。 瀏覽器表單中的資料,兩種型別: 字串型別(位元組流編碼) 檔案型別(二進位制編碼),檔案是表單資料中