Heim  >  Artikel  >  Backend-Entwicklung  >  Die Bedeutung und Identifizierung des PHP-Bestätigungscodes

Die Bedeutung und Identifizierung des PHP-Bestätigungscodes

墨辰丷
墨辰丷Original
2018-06-05 11:46:591637Durchsuche

Dieser Artikel stellt hauptsächlich die Bedeutung und Identifizierung des PHP-Bestätigungscodes vor. Ich hoffe, dass er für alle hilfreich ist.

Verifizierungscode

Vollständig automatisierter öffentlicher Turing-Test zur Unterscheidung von Computern und Menschen (kurz CAPTCHA), allgemein bekannt als Verifizierung Code ist ein öffentliches automatisches Programm, das Benutzer als Computer und Menschen unterscheidet. Bei einem CAPTCHA-Test generiert der Computer als Server automatisch eine Frage, die der Benutzer beantworten muss. Diese Frage kann von einem Computer generiert und beurteilt werden, aber nur ein Mensch kann sie beantworten. Da Computer keine CAPTCHA-Fragen beantworten können, kann der Benutzer, der die Fragen beantwortet, als Mensch betrachtet werden.
Einführung in die Enzyklopädie

Einfach ausgedrückt handelt es sich um zufällig generierte Zeichen, die auf einem Bild ausgegeben werden [andere Formen von Drag-and-Drop/SMS-Bestätigungscodes usw. werden hier nicht berücksichtigt].

Gängige Typen

Ideen

Dieser Artikel dient nur zu Demonstrationszwecken, daher der erste Bildbestätigungscode wird als Beispiel zur Erläuterung herangezogen.

Jeder Punkt auf dem Bild hat seinen RGB-Wert, der über den Farbwähler ermittelt werden kann. Mit bloßem Auge ist der Verifizierungscode zu erkennen Das Bild ist ein rein digitaler Volltonhintergrund

Aus dem Farbwähler ist ersichtlich, dass der RGB-Wert der Hintergrundfarbe des Verifizierungscodes (212.214.204) ist.

Erfolg

Lassen Sie uns die imagecolorsforindex-Funktion von PHP verwenden, um die RGB-Werte aller Punkte im Bild zu erhalten:

$url = 'http://210.32.33.91:8080/reader/captcha.php';
$im = imagecreatefromgif($url);
imagegif($im, '1.gif');
$rgbArray = array();
$res = $im;
$size = getimagesize($url);

$wid = $size['0'];
$hid = $size['1'];
for ($i = 0; $i < $hid; ++ $i) {
 for ($j = 0; $j < $wid; ++ $j) {
  $rgb = imagecolorat($res, $j, $i);
  $rgbArray[$i][$j] = imagecolorsforindex($res, $rgb);
 }
}

Die Ergebnisse sind wie folgt:

Vielleicht möchten Sie fragen, welchen Nutzen das hat So zeigen Sie die Daten an: Geben Sie für die Hintergrundfarbe aus, geben Sie für den Bestätigungscodebereich aus und kommen Sie dann erneut. Schauen Sie sich Folgendes an:

for ($i = 0; $i < $hid; $i ++) {
 for ($j = 0; $j < $wid; $j ++) {
  
  if ($rgbArray[$i][$j][&#39;red&#39;] == 212) {
   echo &#39;□&#39;;
  } else {
   echo &#39;■&#39;;
  }
 }
 echo "<br>";
}

Wirkung:

Jetzt ist es klar.

Aber Sie haben vielleicht noch Fragen. Obwohl Sie es sehen können, woher wissen Sie, wie viel es ist?

Lassen Sie es uns unten analysieren:


Der Abstand zwischen den einzelnen Verifizierungscodes beträgt 4 Leerzeichen, der Abstand links und rechts beträgt 6/10 Leerzeichen und der Abstand oben und unten beträgt 16/10 Leerzeichen.

Entfernen wir diese Störstellen noch einmal, damit wir klarer sehen können:



Ist es vielleicht noch so klar? Ich werde jemanden fragen, wie Sie wissen können, was die Zahlen auf dem Bild sind, nachdem Sie so viel geredet haben.

Okay, lassen Sie mich Ihnen jetzt meine Idee sagen mit 0 und 1. , und die Formen dieser Zahlen sind festgelegt, sodass Sie 0-9 erhalten können. Jeder Bereich jedes Wortes 8*10 besteht aus 0 und 1,

Wir führen dann alle 8 Unterteilungen durch, entfernen den 4er-Raum und führen eine Schleife durch, um den 01-Kombinationswert von 0-9 zu erhalten:


$dic = array(
 &#39;00011000001111000110011011000011110000111100001111000011011001100011110000011000&#39; => 0,
 &#39;00011000001110000111100000011000000110000001100000011000000110000001100001111110&#39; => 1,
 &#39;00111100011001101100001100000011000001100000110000011000001100000110000011111111&#39; => 2,
 &#39;01111100110001100000001100000110000111000000011000000011000000111100011001111100&#39; => 3,
 &#39;00000110000011100001111000110110011001101100011011111111000001100000011000000110&#39; => 4,
 &#39;11111110110000001100000011011100111001100000001100000011110000110110011000111100&#39; => 5,
 &#39;00111100011001101100001011000000110111001110011011000011110000110110011000111100&#39; => 6,
 &#39;11111111000000110000001100000110000011000001100000110000011000001100000011000000&#39; => 7,
 &#39;00111100011001101100001101100110001111000110011011000011110000110110011000111100&#39; => 8,
 &#39;00111100011001101100001111000011011001110011101100000011010000110110011000111100&#39; => 9
);

Nachdem diese 10 erhalten wurden, werden sie zu einem Array zusammengefasst. Jedes Mal, wenn das RGB des Bildes analysiert und durch den entsprechenden Array-Wert ersetzt wird, wird der Bestätigungscodewert erhalten. Lassen Sie uns unten demonstrieren:

Nehmen Sie zum Schluss der Genauigkeit halber 100 Schleifen und sehen Sie:


Zusammenfassung : Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.

Verwandte Empfehlungen:

PHPExcel-Methode zum Lesen von Excel-Dateien und einfachen Beispielen


Das PHP-MVC-Framework skymvc unterstützt die Implementierungsmethode zum Hochladen mehrerer Dateien


Eine einfache Analyse verwirrender Längenberechnungsprobleme in PHP

Das obige ist der detaillierte Inhalt vonDie Bedeutung und Identifizierung des PHP-Bestätigungscodes. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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