Der einfache Bestätigungscode gibt tatsächlich einige Zeichen im Bild aus, was durch die Imagestring-Funktion erreicht werden kann.
Um den Bestätigungscode jedoch sicherer zu machen und zu verhindern, dass andere Programme ihn automatisch erkennen, ist es jedoch häufig erforderlich, eine gewisse Interferenzverarbeitung am Bestätigungscode durchzuführen. Normalerweise werden einige Rauschpunkte gezeichnet. Interferenzliniensegmente werden gezeichnet und die ausgegebenen Zeichen werden geneigt und verdreht sowie andere Vorgänge ausgeführt.
Sie können Imagesetpixel zum Zeichnen von Punkten verwenden, um Rauschinterferenzen zu erzielen. Das Zeichnen nur eines Punkts ist jedoch von geringem Nutzen, sodass Schleifen häufig zum zufälligen Zeichnen verwendet werden.
<br>例子:
$img = imagecreatetruecolor(100, 40);
$black = imagecolorallocate($img, 0x00, 0x00, 0x00);
$green = imagecolorallocate($img, 0x00 , 0xFF, 0x00);
$white = imagecolorallocate($img, 0xFF, 0xFF, 0xFF);
imagefill($img,0,0,$white);
//Generieren Sie einen zufälligen Bestätigungscode
$code = '';
for($i = 0; $i < 4; $i ) { //4-stelliger Bestätigungscode
$code .= rand(0, 9) ;
}
imagestring($img, 5, 10, 10, $code, $black);
//Rauscheninterferenz hinzufügen
for($i = 0;$i<50;$i ) {
imagesetpixel($img, rand(0, 100) , rand(0, 100) , $black); Zeichne ein einzelnes Pixel, Syntax: bool imagesetpixel ( resources $image , int $x , int $y , int $color )
imagesetpixel($img, rand(0, 100) , rand(0, 100) , $green);
}//Bestätigungscode ausgeben
header("content-type: image/png");
imagepng($img); //Das Bild im PNG-Format an den Browser ausgeben
imagedestroy($img); //Nachdem die Bildverarbeitung abgeschlossen ist, verwenden Sie die Anweisung imagedestroy(), um die Bildressource zu zerstören Speicher freigeben, obwohl diese Funktion nicht erforderlich ist, es sich jedoch empfiehlt, sie zu verwenden.
<br><br><br>