Bei der Entwicklung von Websites sind Verifizierungscodesysteme ein wichtiges Mittel, um böswillige Registrierung und Roboterangriffe zu verhindern. PHP verfügt über eine leistungsstarke GD -Bibliothek, mit der problemlos benutzerdefinierte Bildüberprüfungscodes erstellt werden können. Unter ihnen kann die ImageFontwidth -Funktion uns helfen, die Zeichenbreite dynamisch zu berechnen, wodurch das Design der adaptiven Breite des Verifizierungscode -Bilds realisiert wird, wodurch der Verifizierungscode schöner und vernünftiger angezeigt wird.
In diesem Artikel wird detailliert erläutert, wie die ImageFontwidth -Funktion von PHP verwendet wird, um ein adaptives Bildüberprüfungscodesystem für die Breite zu implementieren.
ImageFontwidth ist eine Funktion in der PHP-GD-Bibliothek, die die Breite (Einheiten: Pixel) eines einzelnen Zeichens in einer integrierten Schrift zurückgibt. Die grundlegende Verwendung ist wie folgt:
imagefontwidth(int $font): int
Der Parameter $ -Kraft ist eine Ganzzahl, die die Schriftgröße im Bereich von 1 bis 5 darstellt. Je größer die Zahl ist, desto größer ist die Schriftart.
Diese Funktion wird häufig in Verbindung mit dem ImageFonTei verwendet, um den von Zeichen besetzten Raum genau zu berechnen.
Um ein Verifizierungscode -Bild mit adaptiver Breite zu erstellen, sind die Hauptschritte:
Generieren Sie Verifizierungscode -Zeichenfolgen (normalerweise eine Kombination aus zufälligen Buchstaben und Zahlen)
Berechnen Sie die Gesamtbreite des Verifizierungscodes <br> Verwenden Sie ImageFontwidth , um die Breite eines einzelnen Zeichens zu erhalten, multiplizieren Sie die Anzahl der Zeichen und die erforderliche Breite des gesamten Verifizierungscode
Erstellen Sie Leinwand basierend auf der Breite <br> Verwenden Sie ImageCrreatTueColor, um Bilder mit angegebener Breite und Höhe zu erstellen
Draw Verification Code Zeichen <br> Schreiben Sie Charaktere in das Bild in Ordnung, angeordnet von links nach rechts
Bilder ausgeben und Ressourcen zerstören
Hier finden Sie einen vollständigen Beispielcode, der zeigt, wie ein Verifizierungscode für adaptive Breite basierend auf ImageFontwidth implementiert wird:
<?php
// Generieren Sie zufällige Verifizierungscodezeichenfolge
function generateCaptchaCode($length = 5) {
$chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789'; // Vermeiden Sie verwirrende Charaktere
$code = '';
for ($i = 0; $i < $length; $i++) {
$code .= $chars[random_int(0, strlen($chars) - 1)];
}
return $code;
}
// Die Hauptfunktion generiert das Bildcodebild
function createCaptchaImage($code) {
$font = 5; // Verwenden Sie eine integrierte Schriftgröße5
$charWidth = imagefontwidth($font);
$charHeight = imagefontheight($font);
$padding = 10; // Links und links Ränder
// Berechnen Sie die Bildbreite und Höhe
$width = $charWidth * strlen($code) + $padding * 2;
$height = $charHeight + $padding * 2;
// Bildressourcen erstellen
$image = imagecreatetruecolor($width, $height);
// Definieren Sie die Farbe
$bgColor = imagecolorallocate($image, 255, 255, 255); // Weißer Hintergrund
$textColor = imagecolorallocate($image, 0, 0, 0); // Schwarzer Text
$noiseColor = imagecolorallocate($image, 100, 120, 180); // Geräuschfarbe
// Füllen Sie den Hintergrund
imagefilledrectangle($image, 0, 0, $width, $height, $bgColor);
// Interferenzrauschen hinzufügen
for ($i = 0; $i < 50; $i++) {
imagesetpixel($image, random_int(0, $width), random_int(0, $height), $noiseColor);
}
// Draw Verification Code Text nach Charakter zeichnen
$x = $padding;
$y = $padding;
for ($i = 0; $i < strlen($code); $i++) {
imagestring($image, $font, $x, $y, $code[$i], $textColor);
$x += $charWidth;
}
// Ausgabe Bildhader
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
}
// Generieren Sie den Verifizierungscodezeichenfolge generieren
$captchaCode = generateCaptchaCode(6);
// Ausgabe des Verifizierungscodebildes
createCaptchaImage($captchaCode);
?>
Adaptive Breite : Der Code berechnet dynamisch die Breite eines einzelnen Zeichens durch ImageFontwidth , multipliziert mit der Anzahl der Verifizierungscodezeichen und fügt dann Ränder hinzu, so dass die Breite des Verifizierungscodebildes automatisch mit der Länge des Inhalts angepasst wird.
Schriftgröße : Das Beispiel verwendet die integrierte GD-Schriftart 5. Wenn Sie einen besseren visuellen Effekt benötigen, können Sie ImagettFtext verwenden, um TrueType-Schriftart zu laden. Sie müssen jedoch zusätzlich die Berechnung der Zeichenbreite verarbeiten.
Sicherheit : Nach dem Generieren des Verifizierungscode kann der Bestätigungscode -Zeichenfolge in der Sitzung zur Überprüfung gespeichert werden, wenn das Formular eingereicht wird.
Verschönerung : Sie können mehr Rauschen und Kurven hinzufügen oder die Schriftfarbe ändern, um die Anti-Cracking-Fähigkeit von Verifizierungscodes zu verbessern.
Durch die ImageFontwidth -Funktion von PHP können wir die Breite eines einzelnen Zeichens genau erhalten und die dynamische Anpassung der Breite des Verifizierungscodebildes realisieren. Diese Methode ist einfach und effizient und für die Erzeugung grundlegender adaptiver Breite Bildüberprüfungscodes geeignet.
Wenn komplexere Verifizierungscode-Effekte benötigt werden, können Sie andere GD-Zeichnungsfunktionen kombinieren oder eine Verifizierungscodebibliothek von Drittanbietern verwenden.