


Generieren Sie komplizierte (gekippte, sinusf?rmige, eingefügte, gedrehte) Verifizierungscodes
Mar 24, 2018 pm 05:52 PMDieses 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('#f36161','#6bc146','#5368bd'); //字體顏色,紅綠藍 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!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

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

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

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

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

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

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

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.

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

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.

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