国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Heim Backend-Entwicklung PHP-Tutorial Generieren Sie komplizierte (gekippte, sinusf?rmige, eingefügte, gedrehte) Verifizierungscodes

Generieren Sie komplizierte (gekippte, sinusf?rmige, eingefügte, gedrehte) Verifizierungscodes

Mar 24, 2018 pm 05:52 PM
Interferenz

Dieses Mal stellen wir Ihnen eine Methode zum Generieren komplizierter (geneigte, sinusf?rmige Interferenzlinien, Einfügen, Rotationsüberprüfung) Verifizierungscodes vor. Was sind die Vorsichtsma?nahmen ? Hier sind tats?chliche F?lle, schauen wir uns das an.

Der Verifizierungscode, der mittlerweile von vielen Websites verwendet wird, kann von der Software sehr einfach automatisch erkannt werden. In diesem Artikel wird ein PHP zur Generierung komplexer Verifizierungscodes mit Effekten wie Neigung, Akkordinterferenzlinie usw. vorgestellt. Einfügen, Drehen usw.

Es gibt drei g?ngige Verifizierungscode-Methoden, die von Software nicht leicht erkannt werden:

1. Schriftartvariation (im Allgemeinen durch Algorithmen verzerrt)

2. Einfügen von Schriftarten (der qq-Best?tigungscode wird hier dargestellt. Es ist immer noch schwierig, den qq-Best?tigungscode online zu finden und zu knacken)

3 , Interferenzlinien, Rauschpunkte (diese Art der Identifizierung ist recht einfach und kann vom Programm automatisch identifiziert werden)

Wie oben erw?hnt, sind die erste und zweite Methode schwieriger zu identifizieren.

Spezifischer Implementierungscode:

<?php
/**
 *帶文字旋轉(zhuǎn),傾斜,黏貼,加正弦干擾線驗證碼*
 */
class Utils_Caption
{
	var $Width   = 60;      //圖片寬
	var $Height   = 30;      //圖片高
	var $Length   = 4;      //驗證碼位數(shù)
	var $BgColor  = "#FFFFFF";  //背景色
	var $TFonts = array("font.ttf");
	var $TFontSize=array(17,20); //字體大小范圍
	var $TFontAngle=array(-20,20); //旋轉(zhuǎn)角度
	var $Chars  = "0123456789";     //驗證碼范圍(字母數(shù)字)
	var $Code  = array();       //驗證碼
	var $Image  = "";       //圖形對象
	var $FontColors=array(&#39;#f36161&#39;,&#39;#6bc146&#39;,&#39;#5368bd&#39;); //字體顏色,紅綠藍
	var $TPadden = 0.75;///字符間距,多少個字符
	var $Txbase = 5;///x軸兩邊距離
	var $Tybase =5 ;///y軸兩邊距離
	var $TLine =true; ///畫干擾線
	public function RandRSI() ///生成驗證碼
	{
		$this->TFontAngle=range($this->TFontAngle[0],$this->TFontAngle[1]);
		$this->TFontSize=range($this->TFontSize[0],$this->TFontSize[1]);
		$arr=array();
		$Chars=$this->Chars;
		$TFontAngle=$this->TFontAngle;
		$TFontSize=$this->TFontSize;
		$FontColors=$this->FontColors;
		$code="";
		$font=dirname(FILE)."/font/".$this->TFonts[0];
		$charlen=strlen($Chars)-1;
		$anglelen=count($TFontAngle)-1;?//?角度范圍
		$fontsizelen=count($TFontSize)-1;?//?角度范圍
		$fontcolorlen=count($FontColors)-1;?//?角度范圍
		for($i=0;$i<$this->Length;$i++)?///得到字符與顏色
		{
			$char=$Chars[rand(0,$charlen)];?///得到字符
			$angle=$TFontAngle[rand(0,$anglelen)];?///旋轉(zhuǎn)角度
			$fontsize=$TFontSize[rand(0,$fontsizelen)];?///字體大小
			$fontcolor=$FontColors[rand(0,$fontcolorlen)];?///字體大小
			$bound=$this->_calculateTextBox($fontsize,$angle,$font,$char);?///得到范圍
			$arr[]=array($fontsize,$angle,$fontcolor,$char,$font,$bound);?///得到矩形框
			$code.=$char;
		}
		$this->Code=$arr;?//驗證碼
		return?$code;
	}
	public?function?Draw()?///畫圖
	{
		if(empty($this->Code))?$this->RandRSI();
		$codes=$this->Code;?///用戶驗證碼
		$wh=$this->_getImageWH($codes);
		$width=$wh[0];
		$height=$wh[1];?///高度
		$this->Width=$width;
		$this->Height=$height;
		$this->Image?=?imageCreate(?$width,?$height?);
		$image=$this->Image;
		$back?=?$this->_getColor2($this->_getColor(?$this->BgColor));?///背景顏色
		imageFilledRectangle($image,?0,?0,?$width,?$height,?$back);?///填充背景
		$TPadden=$this->TPadden;
		$basex=$this->Txbase;
		$color=null;
		foreach?($codes?as?$v)?///逐個畫字符
		{
			$bound=$v[5];
			$color=$this->_getColor2($this->_getColor($v[2]));
			imagettftext($image,?$v[0],?$v[1],?$basex,?$bound['height'],$color?,?$v[4],?$v[3]);
			$basex=$basex+$bound['width']*$TPadden-$bound['left'];///計算下一個左邊距
		}
		$this->TLine?$this->_wirteSinLine($color,$basex):null;?///畫干擾線
		header("Content-type:?image/png");
		imagepng(?$image);
		imagedestroy($image);
	}
	/**
	?*通過字體角度得到字體矩形寬度*
	?*
	?*?@param?int?$font_size?字體尺寸
	?*?@param?float?$font_angle?旋轉(zhuǎn)角度
	?*?@param?string?$font_file?字體文件路徑
	?*?@param?string?$text?寫入字符
	?*?@return?array?返回長寬高
	?*/
	private?function?_calculateTextBox($font_size,?$font_angle,?$font_file,?$text)?{
		$box?=?imagettfbbox($font_size,?$font_angle,?$font_file,?$text);
		$min_x?=?min(array($box[0],?$box[2],?$box[4],?$box[6]));
		$max_x?=?max(array($box[0],?$box[2],?$box[4],?$box[6]));
		$min_y?=?min(array($box[1],?$box[3],?$box[5],?$box[7]));
		$max_y?=?max(array($box[1],?$box[3],?$box[5],?$box[7]));
		return?array(
		'left'?=>?($min_x?>=?-1)???-abs($min_x?+?1)?:?abs($min_x?+?2),
		'top'?=>?abs($min_y),
		'width'?=>?$max_x?-?$min_x,
		'height'?=>?$max_y?-?$min_y,
		'box'?=>?$box
		);
	}
	private?function?_getColor(?$color?)?//#ffffff
	{
		return?array(hexdec($color[1].$color[2]),hexdec($color[3].$color[4]),hexdec($color[5].$color[6]));
	}
	private?function?_getColor2(?$color?)?//#ffffff
	{
		return?imagecolorallocate?($this->Image,?$color[0],?$color[1],?$color[2]);
	}
	private?function?_getImageWH($data)
	{
		$TPadden=$this->TPadden;
		$w=$this->Txbase;
		$h=0;
		foreach?($data?as?$v)
		{
			$w=$w+$v[5]['width']*$TPadden-$v[5]['left'];
			$h=$h>$v[5]['height']?$h:$v[5]['height'];
		}
		return?array(max($w,$this->Width),max($h,$this->Height));
	}
	//畫正弦干擾線
	private?function?_wirteSinLine($color,$w)
	{
		$img=$this->Image;
		$h=$this->Height;
		$h1=rand(-5,5);
		$h2=rand(-1,1);
		$w2=rand(10,15);
		$h3=rand(4,6);
		for($i=-$w/2;$i<$w/2;$i=$i+0.1)
		{
			$y=$h/$h3*sin($i/$w2)+$h/2+$h1;
			imagesetpixel($img,$i+$w/2,$y,$color);
			$h2!=0?imagesetpixel($img,$i+$w/2,$y+$h2,$color):null;
		}
	}
}

DEMO-Code:

$rsi = new Utils_Caption();
$rsi->TFontSize=array(15,17);
$rsi->Width=50;
$rsi->Height=25;
$code?=?$rsi->RandRSI();
session_start();
$_SESSION["CHECKCODE"]?=?$code;
$rsi->Draw();

Betriebseffekt:

Sie k?nnen die entsprechenden Werte im Code ?ndern, um die von Ihnen ben?tigte Komplexit?t zu erreichen.

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie hier Verwandte Artikel auf der chinesischen PHP-Website!

Empfohlene Lektüre:

Detaillierte Erkl?rung, wie PHP Schlüsselwerte beibeh?lt + Arrays zusammenführt

So entfernen Sie Duplikate in ein zweidimensionaler Array-Wert

Das obige ist der detaillierte Inhalt vonGenerieren Sie komplizierte (gekippte, sinusf?rmige, eingefügte, gedrehte) Verifizierungscodes. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erkl?rung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Hei?e KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?e Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie implementiere ich Authentifizierung und Autorisierung in PHP? Wie implementiere ich Authentifizierung und Autorisierung in PHP? Jun 20, 2025 am 01:03 AM

TosecurelyHandleAuthenticationAuthorizationInphp, folge theSteps: 1.Alwayshashpasswordswithpassword_hash () und password_verify (), usePreeParedStatementStopreventsQlinjapitca und StoreuserDatain $ _SessionArtelogin.2.ImplementscaChescescesc

Wie bleibe ich mit den neuesten PHP-Entwicklungen und Best Practices auf dem neuesten Stand? Wie bleibe ich mit den neuesten PHP-Entwicklungen und Best Practices auf dem neuesten Stand? Jun 23, 2025 am 12:56 AM

TostaycurrentwithPHPdevelopmentsandbestpractices,followkeynewssourceslikePHP.netandPHPWeekly,engagewithcommunitiesonforumsandconferences,keeptoolingupdatedandgraduallyadoptnewfeatures,andreadorcontributetoopensourceprojects.First,followreliablesource

Was ist PHP und warum wird es für die Webentwicklung verwendet? Was ist PHP und warum wird es für die Webentwicklung verwendet? Jun 23, 2025 am 12:55 AM

PHPBECAMEPOPULARFORWebDevelopmentDuetoitSeaseoflearning, Seamlessintegrationwithhtml, weit verbreitete Hostingsupport, andalargeecosystemincludingFrameWorkelaravelandcmsplatformen -?hnliche WordPress.itexcelsinformlingsformen, Managingusesersions, Interacti

Wie setzen Sie die PHP -Zeitzone? Wie setzen Sie die PHP -Zeitzone? Jun 25, 2025 am 01:00 AM

Tosettherighttimezoneinphp, usedate_default_timezone_set () functionAtthestartofyourScriptWithAvalididentifiersuchas'america/new_york'.1.usedate_default_timezone_set () beeanydate/timeFununtions.2.Alternativ, konfigurieren

Wie installiere ich PHP in meinem Betriebssystem (Windows, MacOS, Linux)? Wie installiere ich PHP in meinem Betriebssystem (Windows, MacOS, Linux)? Jun 20, 2025 am 01:02 AM

Die Methode zur Installation von PHP variiert vom Betriebssystem zum Betriebssystem. Im Folgenden sind die spezifischen Schritte aufgeführt: 1. Windows -Benutzer k?nnen mit XAMPP Pakete installieren oder manuell konfigurieren, XAMPP herunterladen und installieren, PHP -Komponenten ausw?hlen oder Umgebungsvariablen PHP hinzufügen. 2. MacOS -Benutzer k?nnen PHP über Homebrew installieren, den entsprechenden Befehl ausführen, um den Apache -Server zu installieren und zu konfigurieren. 3.. Linux -Benutzer (Ubuntu/Debian) k?nnen mit dem APT -Paket -Manager die Quelle aktualisieren und die allgemeinen Erweiterungen installieren und überprüfen, ob die Installation durch das Erstellen einer Testdatei erfolgreich ist.

Wie validiere ich die Benutzereingabe in PHP, um sicherzustellen, dass bestimmte Kriterien erfüllt? Wie validiere ich die Benutzereingabe in PHP, um sicherzustellen, dass bestimmte Kriterien erfüllt? Jun 22, 2025 am 01:00 AM

TovalidateuserinputinPHP,usebuilt-invalidationfunctionslikefilter_var()andfilter_input(),applyregularexpressionsforcustomformatssuchasusernamesorphonenumbers,checkdatatypesfornumericvalueslikeageorprice,setlengthlimitsandtrimwhitespacetopreventlayout

Wie zerst?re ich eine Sitzung in PHP mit Session_Destroy ()? Wie zerst?re ich eine Sitzung in PHP mit Session_Destroy ()? Jun 20, 2025 am 01:06 AM

Um eine Sitzung in PHP vollst?ndig zu zerst?ren, müssen Sie zuerst Call Session_start () mit der Sitzung aufrufen und dann Session_Destroy () alle Sitzungsdaten l?schen. 1. Verwenden Sie zuerst Session_start (), um sicherzustellen, dass die Sitzung begonnen hat. 2. Rufen Sie dann Session_destroy () auf, um die Sitzungsdaten zu l?schen. 3.. Optional, aber empfohlen: manuell nicht festgelegt $ _Session Array, um globale Variablen zu l?schen; 4. L?schen Sie gleichzeitig Sitzungscookies, um zu verhindern, dass der Benutzer den Sitzungsstatus beibeh?lt. 5. Achten Sie schlie?lich darauf, den Benutzer nach der Zerst?rung umzuleiten und die Sitzungsvariablen sofort wieder zu verwenden, da sonst die Sitzung neu gestartet werden muss. Wenn Sie dies tun, wird sichergestellt, dass der Benutzer das System vollst?ndig verl?sst, ohne Restinformationen zu hinterlassen.

Was ist die Datenserialisierung in PHP (Serialize (), nieserialize ())? Was ist die Datenserialisierung in PHP (Serialize (), nieserialize ())? Jun 22, 2025 am 01:03 AM

ThePHPfunctionsserialize()andunserialize()areusedtoconvertcomplexdatastructuresintostorablestringsandbackagain.1.serialize()convertsdatalikearraysorobjectsintoastringcontainingtypeandstructureinformation.2.unserialize()reconstructstheoriginaldatafrom

See all articles