Lösung
1. Öffnen Sie die gd2-Bibliothek und zeigen Sie sie über phpinfo an. Löschen Sie die Stückliste. Der Code wird ab der obersten Zeile geschrieben, daher kann das Problem im Code auftreten.
2. Fügen Sie die ob_clean()-Anweisung vor dem Header hinzu und führen Sie sie dann aus.
Notiz
Beim Generieren von Bildern darf header('Content-type: image/png'); keine Ausgabe voranstellen. Oder fügen Sie hinzu: ob_clean(); Auch wenn Sie die Ausgabe verwenden, können Sie diesen Satz verwenden, um den Ausgabecache zu leeren.
Beispiele lösen
//Legen Sie die Höhe und Breite des VerifizierungscodesAnzahl der Zeichen oben fest $img_w = 70; $img_h = 22; $font = 5; $char_len = 5; //Array-Zusammenführung, die Funktion range() gibt ein Bereichsarray zurück $char = array_merge ( range ( 'a', 'z' ), range ( 'A', 'Z' ), range ( '1', '9' ) ); $rand_keys = array_rand ( $char, $char_len ); // Nimm zufällig eine bestimmte Anzahl von Elementen aus dem Array, um Schlüsselwerte zu generieren if ($char_len == 1) { //Wenn es nur eine Zahl gibt, gibt array_rand() einen Nicht-Array-Typ zurück $rand_keys = array ($rand_keys ); } shuffle($rand_keys); //Keine Verwendung erforderlich $code = ''; foreach ( $rand_keys as $k ) { $code .= $char [$k]; } session_start (); $_SESSION ['captcha'] = $code; //Linie und Farbe hinzufügen //Neues Bild erstellen $img = imagecreatetruecolor ( $img_w, $img_h ); //Farbe zuweisen $bg_color = imagecolorallocate ( $img, 0xcc, 0xcc, 0xcc ); //Hintergrundfarbe der Leinwand Bildfüllung ( $img, 0, 0, $bg_color ); //Interferenzlinie for($i = 0; $i < 300; ++$i) { $color = imagecolorallocate ( $img, mt_rand ( 0, 255 ), mt_rand ( 0, 255 ), mt_rand ( 0, 255 ) ); imagesetpixel ( $img, mt_rand ( 0, $img_w ), mt_rand ( 0, $img_h ), $color ); } for($i = 0; $i <= 10; ++ $i) { //Legen Sie die Linienfarbe fest $color = imageColorAllocate ( $img, mt_rand ( 0, 255 ), mt_rand ( 0, 255 ), mt_rand ( 0, 255 ) ); //Zeichne zufällig eine gerade Linie auf dem $img-Bild imageline ( $img, mt_rand ( 0, $img_w ), mt_rand ( 0, $img_h ), mt_rand ( 0, $img_w ), mt_rand ( 0, $img_h ), $color ); //imagesetpixel($img,mt_rand(0,$img_w),mt_rand(0,$img_h),$color); } //Rahmen hinzufügen $rect_color = imagecolorallocate ( $img, 0x90, 0x90, 0x90 ); imagerectangle ( $img, 0, 0, $img_w - 1, $img_h - 1, $rect_color ); $str_color = imagecolorallocate ( $img, mt_rand ( 0, 100 ), mt_rand ( 0, 100 ), mt_rand ( 0, 100 ) ); $font_w = imagefontwidth ( $font ); $font_h = imagefontheight ( $font ); $str_len = $font_w * $char_len; Bildzeichenfolge ( $img, $font, ($img_w - $str_len) / 2, ($img_h - $font_h) / 2, $code, $str_color );
Das Obige ist die Lösung für das Problem, dass PHP keine Bilder generieren kann. Ich hoffe, dass es für alle hilfreich ist.