php打造驗證碼,php識別驗證碼

本文目錄一覽:

php驗證碼怎麼實現

1. 新建code.php驗證碼生成文件

在此之前必須打開php的GD庫,修改php.ini文件的配置,取消extension=php_gd2.dll前面的分號。代碼如下:

?php

session_start();

//生成驗證碼圖片

Header(“Content-type: image/PNG”);

$im = imagecreate(44,18);

$back = ImageColorAllocate($im, 245,245,245);

imagefill($im,0,0,$back); //背景

srand((double)microtime()*1000000);

//生成4位數字

for($i=0;$i4;$i++){

$font = ImageColorAllocate($im, rand(100,255),rand(0,100),rand(100,255));

$authnum=rand(1,9);

$vcodes.=$authnum;

imagestring($im, 5, 2+$i*10, 1, $authnum, $font);

}

for($i=0;$i100;$i++) //加入干擾象素

{

$randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));

imagesetpixel($im, rand()p , rand()0 , $randcolor);

}

ImagePNG($im);

ImageDestroy($im);

$_SESSION[‘Checknum’] = $vcodes;

?

2. 顯示驗證碼圖片

在需要顯示驗證碼的頁面中加入

input type=”text” name=”passcode”

img src=”code.php”

3.判斷並獲取驗證碼的值

驗證碼是通過第一步驟代碼中的$_SESSION[‘Checknum’] = $vcodes;賦的值,所以驗證碼的值存在$_SESSION[‘Checknum’]當中。在驗證頁面,使用以下代碼,

session_start();//啟動會話

$code=$_POST[“passcode”];

if( $code == $_SESSION[“Checknum”])

{…}即可完成驗證碼登錄。

運行截圖:

望採納,謝謝

怎樣製作PHP驗證碼

?php

//驗證碼:文本類型為圖像

header(“content-type:image/png”);

define(‘TYPE’,3);//1.字母 2.字母數字 3.數字 4.邏輯 5.漢字

session_start();

//創建畫布

$img = imagecreatetruecolor(90,33);

//創建顏色

//$bgcolor = imagecolorallocate($img,rand(200,255),rand(200,255),rand(200,255));

$bgcolor = imagecolorallocate($img,255,255,255);

$textcolor = imagecolorallocate($img,rand(0,100),rand(0,100),rand(0,100));

//填充顏色到畫布

imagefill($img,0,0,$bgcolor);

//創建但像素的點為干擾項

//for($i=0;$i100;$i++){

// $pixelcolor = imagecolorallocate($img,rand(150,200),rand(150,200),rand(150,200));

// imagesetpixel($img,rand(0,70),rand(0,30),$pixelcolor);

//}

//

////劃線

//$linecolor = imagecolorallocate($img,255,0,0);

//imageline($img,0,0,70,30,$linecolor);

//

////多邊形

// $col_poly = imagecolorallocate ( $img , 0 , 255 , 0 );

// imagepolygon ( $img ,

// array (

// 5 , 5,

// 5, 15 ,

// 20,15,

// 20,5

// ),

// 4 ,

// $col_poly );

////弧線

//$arcColor = imagecolorallocate ( $img , 0 , 0 , 255 );

//imagearc($img,35,15,30,30,0,360,$arcColor);

//創建驗證碼的內容

//#字母

$letter = range(‘A’,’Z’);

$letterStr = $letter[rand(0,25)].$letter[rand(0,25)].$letter[rand(0,25)].$letter[rand(0,25)];

//數字字母

$num = range(0,9);

$numberAndLetter = array_merge($letter,$num);

$nal = $numberAndLetter[rand(0,35)].$numberAndLetter[rand(0,35)].$numberAndLetter[rand(0,35)].$numberAndLetter[rand(0,35)];

//#數字

$number = rand(1000,9999);

//#邏輯

$x = rand(1,9);

$y = rand(1,9);

$expression = $x.”+”.$y.”=?”;

$sum = $x+$y;

//#漢字

$CH = array(‘恭喜發財’,’財源滾滾’,’財源廣進’,’才高八斗’,’學富五車’,’抬頭見喜’);

$chstr = $CH[rand(0,count($CH)-1)];

switch(TYPE){

case 1 : imagettftext($img,14,0,7,23,$textcolor,’MSYH.TTF’,$letterStr);$_SESSION[‘code’]=$letterStr;break;

case 2 : imagettftext($img,14,0,7,23,$textcolor,’MSYH.TTF’,$nal);$_SESSION[‘code’]=$nal;break;

case 3 : imagettftext($img,14,0,13,23,$textcolor,’MSYH.TTF’,$number);$_SESSION[‘code’]=$number;break;

case 4 : imagettftext($img,14,0,7,23,$textcolor,’MSYH.TTF’,$expression);$_SESSION[‘code’]=$sum;break;

case 5 : imagettftext($img,11,0,6,21,$textcolor,’MSYHBD.TTF’,$chstr);$_SESSION[‘code’]=$chstr;break;

}

//輸入圖像到瀏覽器

imagepng($img);

?

php怎麼實現驗證碼的

驗證碼功能機制實現思路

常規的驗證碼實現:

a、產生一張png的圖片

b、為圖片設置背景色

c、設置字體顏色和樣式

d、產生4位數的隨機的驗證碼

e、把產生的每個字符調整旋轉角度和位置畫到png圖片上

f、加入噪點和干擾線防止註冊機器分析原圖片來惡意註冊

g、輸出圖片

h、釋放圖片所佔內存

i、將驗證碼保存到session或是數據庫

j、將和輸入的驗證碼進行對比

短信(郵箱)驗證碼機制:

a、產生4-6位數的隨機的驗證碼

b、把產生的每個字符保存到session或是數據庫

c、將驗證碼發送到用戶的手機(郵箱)

d、用戶在規定時間內進行輸入

e、將驗證碼從session或是數據庫中取出

f、將和輸入的驗證碼進行對比驗證

怎麼用PHP寫個驗證碼

首先,當用戶打開頁面時隨機產生一個session,然後根據這個值生成驗證碼圖片。

第二,將驗證碼圖片顯示到表單上。

第三,當用戶提交時表單時,比較session里的值與表單中驗證碼的值進行比較。

簡單的實現過程:

複雜的驗證碼圖片生成:

原創文章,作者:ZEZS,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/142980.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
ZEZS的頭像ZEZS
上一篇 2024-10-14 18:48
下一篇 2024-10-14 18:48

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • PHP獲取301跳轉後的地址

    本文將為大家介紹如何使用PHP獲取301跳轉後的地址。301重定向是什麼呢?當我們訪問一個網頁A,但是它已經被遷移到了另一個地址B,此時若服務器端做了301重定向,那麼你的瀏覽器在…

    編程 2025-04-27
  • PHP登錄頁面代碼實現

    本文將從多個方面詳細闡述如何使用PHP編寫一個簡單的登錄頁面。 1. PHP登錄頁面基本架構 在PHP登錄頁面中,需要包含HTML表單,用戶在表單中輸入賬號密碼等信息,提交表單後服…

    編程 2025-04-27
  • PHP與Python的比較

    本文將會對PHP與Python進行比較和對比分析,包括語法特性、優缺點等方面。幫助讀者更好地理解和使用這兩種語言。 一、語法特性 PHP語法特性: <?php // 簡單的P…

    編程 2025-04-27
  • PHP版本管理工具phpenv詳解

    在PHP項目開發過程中,我們可能需要用到不同版本的PHP環境來試驗不同的功能或避免不同版本的兼容性問題。或者我們需要在同一台服務器上同時運行多個不同版本的PHP語言。但是每次手動安…

    編程 2025-04-24
  • PHP數組去重詳解

    一、array_unique函數 array_unique是php中常用的數組去重函數,它基於值來判斷元素是否重複,具體使用方法如下: $array = array(‘a’, ‘b…

    編程 2025-04-24
  • PHP導出Excel文件

    一、PHP導出Excel文件列寬調整 當我們使用PHP導出Excel文件時,有時需要調整單元格的列寬。可以使用PHPExcel類庫中的setWidth方法來設置單元格的列寬。下面是…

    編程 2025-04-24
  • php擴展庫初探

    一、什麼是php擴展庫? PHP擴展庫(PHP extension)是一些用C語言編寫的動態鏈接庫,用於擴展PHP的功能。PHP擴展庫使得PHP可以與各種數據庫系統相連、SMTP、…

    編程 2025-04-23

發表回復

登錄後才能評論