Bilder generieren
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ausgabe
bild
code
datei
farbe
format
header
http
image
kombination
mischen
pos
schrift
session
shuffle
text
type
url
wert text
zeichen
-
Mahlzeit alle miteinander,
in Ahnlehnung an dieses Thema bin ich gerade dabei mein Captcha zu überarbeiten.
Ich habe mir aus dem Netz mal folgenden Code besorgt,
<?php session_start(); // alle moeglichen Zeichen ohne Problemfälle $moegliche_zeichen = "A B C D E F G H J K M N Q R T U V W X Y 2 3 4 5 7 8"; // erstellen eines Arrays $kombinationen = explode(" ", $moegliche_zeichen); // mischen des Arrays shuffle ( $kombinationen ); // die ersten 6 Zeichen aus dem gemischten Array $text = array_slice($kombinationen, 0, 5); // Speicherung in SESSION-Variable für spätere Auswertung $SESSION['captcha-wert'] = $text; Header ("Content-type: image/png"); // Laden der Rohdatei, die sich im Verzeichnis befinden muss // herunterladen von // http://www.php-kurs.com/bilder/captcha-clock.png $bild = ImageCreateFromPNG ("captcha-clock.png"); // Farben definieren $farbe_w = ImageColorAllocate ($bild, 255, 255, 255); $farbe_b = ImageColorAllocate ($bild, 0, 0, 0); // die verwendete Schrift-Datei arial.ttf muss vorhanden sein // Aufbau: // Schriftgröße, Winkel, X-Pos., Y-Pos, Farbe, Schrift, Inhalt ImageTTFText ($bild, 32, -30, 140, 70, $farbe_b, "arial.ttf", $text[0]); ImageTTFText ($bild, 32, -90, 180, 130, $farbe_b, "arial.ttf", $text[1]); ImageTTFText ($bild, 32, 0, 130, 210, $farbe_b, "arial.ttf", $text[2]); ImageTTFText ($bild, 32, 45, 80, 190, $farbe_b, "arial.ttf", $text[3]); ImageTTFText ($bild, 32, 99, 80, 120, $farbe_b, "arial.ttf", $text[4]); // Ausgabe im Format PNG ImagePng ($bild); // Ressourcen wieder freigeben ImageDestroy ($bild); ?>
, dieser funktioniert auch soweit, allerdings bekomme ich keine weitere Schrift hinzugefügt.
Ich habe das ganze mal als komplett aufgebaut und versuche es bereits seit gestern Abend, aber es will nicht so wie ich es möchte.
<?php session_start(); ob_start(); ?> <html> <head> <title>Captchatest</title> </head> <body> <?php // alle moeglichen Zeichen ohne Problemfälle $moegliche_zeichen = "A B C D E F G H J K M N Q R T U V W X Y 2 3 4 5 7 8"; // erstellen eines Arrays $kombinationen = explode(" ", $moegliche_zeichen); // mischen des Arrays shuffle ( $kombinationen ); // die ersten 6 Zeichen aus dem gemischten Array $text = array_slice($kombinationen, 0, 5); // Speicherung in SESSION-Variable für spätere Auswertung $SESSION['captcha-wert'] = $text; Header ("Content-type: image/png"); // Laden der Rohdatei, die sich im Verzeichnis befinden muss // herunterladen von // http://www.php-kurs.com/bilder/captcha-clock.png $bild = ImageCreateFromPNG ("captcha-clock.png"); // Farben definieren $farbe_w = ImageColorAllocate ($bild, 255, 255, 255); $farbe_b = ImageColorAllocate ($bild, 0, 0, 0); // die verwendete Schrift-Datei arial.ttf muss vorhanden sein // Aufbau: // Schriftgröße, Winkel, X-Pos., Y-Pos, Farbe, Schrift, Inhalt ImageTTFText ($bild, 32, -30, 140, 70, $farbe_b, "arial.ttf", $text[0]); ImageTTFText ($bild, 32, -90, 180, 130, $farbe_b, "arial.ttf", $text[1]); ImageTTFText ($bild, 32, 0, 130, 210, $farbe_b, "arial.ttf", $text[2]); ImageTTFText ($bild, 32, 45, 80, 190, $farbe_b, "arial.ttf", $text[3]); ImageTTFText ($bild, 32, 99, 80, 120, $farbe_b, "arial.ttf", $text[4]); // Ausgabe im Format PNG ImagePng ($bild); // Ressourcen wieder freigeben ImageDestroy ($bild); ?> Hier steht dann wieder text </body> </html>
Ich bekomme nur die Fehlermeldung: Die Grafik ..../captcha.site.php kann nicht angezeigt werden weil sie Fehler enthält.
Kann mich mal bitte jemand aufklären warum dem so ist?
Btw:
Wenn ich den Part welcher das Bild generiert vor den <html> Tag setze dann funktioniert zwar die Bildausgabe, aber der Text fehlt noch immer.
Absoult keine Ahnung warum dem so ist!
Grüße und nen schönen Tag euch allen
EDIT:
Ja, das Bild und auch der Font liegen im richtigen Odner.
Beitrag zuletzt geändert: 9.5.2012 13:44:45 von trickdieb -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Weil du ein Bild nicht mit "<html>" beginnst. Nimm das ganze HTML-Grundgerüst raus, dann sollte es funktionieren.
Also du generierst mit capcha.php das Bild und bindest es dann wie ein normales Bild ein, also <img src="capcha.php" alt="alternativ" />.
Beitrag zuletzt geändert: 9.5.2012 13:46:31 von kelserific -
kelserific schrieb:
Weil du ein Bild nicht mit "<html>" beginnst. Nimm das ganze HTML-Grundgerüst raus, dann sollte es funktionieren.
Habe ich ja bereits geschrieben das es ohne/vor dem Grundgerüst funktioniert, das bringt mich aber nicht weiter.
Es lässt sich nichts weiter hinzufügen, weder irgendwas Geschriebenes noch eine Textbox um die Lösung eintragen zu können!
Mal ganz von nem Layout abgesehen und das ist mein Problem an der Sache.
Das Bilder nicht mit <html> beginnen ist mir klar, ist auch nicht der Zweck des Grundgerüsts [].
EDIT:
Also du generierst mit capcha.php das Bild und bindest es dann wie ein normales Bild ein, also <img src="capcha.php" alt="alternativ" />.
Könntest du meinen Code eventuell so anpassen wie es sein sollte?
Kann mir unter deinen Worten sonst nichts vorstellen.
Habe es jetzt so versucht,
<?php session_start(); // alle moeglichen Zeichen ohne Problemfälle $moegliche_zeichen = "A B C D E F G H J K M N Q R T U V W X Y 2 3 4 5 7 8"; // erstellen eines Arrays $kombinationen = explode(" ", $moegliche_zeichen); // mischen des Arrays shuffle ( $kombinationen ); // die ersten 6 Zeichen aus dem gemischten Array $text = array_slice($kombinationen, 0, 5); // Speicherung in SESSION-Variable für spätere Auswertung $SESSION['captcha-wert'] = $text; Header ("Content-type: image/png"); // Laden der Rohdatei, die sich im Verzeichnis befinden muss // herunterladen von // http://www.php-kurs.com/bilder/captcha-clock.png $bild = ImageCreateFromPNG ("captcha-clock.png"); // Farben definieren $farbe_w = ImageColorAllocate ($bild, 255, 255, 255); $farbe_b = ImageColorAllocate ($bild, 0, 0, 0); // die verwendete Schrift-Datei arial.ttf muss vorhanden sein // Aufbau: // Schriftgröße, Winkel, X-Pos., Y-Pos, Farbe, Schrift, Inhalt ImageTTFText ($bild, 32, -30, 140, 70, $farbe_b, "arial.ttf", $text[0]); ImageTTFText ($bild, 32, -90, 180, 130, $farbe_b, "arial.ttf", $text[1]); ImageTTFText ($bild, 32, 0, 130, 210, $farbe_b, "arial.ttf", $text[2]); ImageTTFText ($bild, 32, 45, 80, 190, $farbe_b, "arial.ttf", $text[3]); ImageTTFText ($bild, 32, 99, 80, 120, $farbe_b, "arial.ttf", $text[4]); // Ausgabe im Format PNG ImagePng ($bild); // Ressourcen wieder freigeben ImageDestroy ($bild); echo '<img src="/captcha.site.php" alte="Captcha" />' ; ?>
Allerdings geht auch das nicht, bzw funktioniert das schon, aber nur solange wie ich
ImagePng($bild) drin lasse da die Ausgabe ja darüber geschieht.
Beitrag zuletzt geändert: 9.5.2012 13:59:31 von trickdieb -
trickdieb schrieb:
Du machst eine eigene HTML-Seite, bei der das "Bild" eingebunden wird, wobei das "Bild" die PHP-Datei ist (ohne HTML-Grundgerüst!).
Es lässt sich nichts weiter hinzufügen, weder irgendwas Geschriebenes noch eine Textbox um die Lösung eintragen zu können!
Mal ganz von nem Layout abgesehen und das ist mein Problem an der Sache. -
trickdieb schrieb:
Du hast folgendes Problem:
kelserific schrieb:
Weil du ein Bild nicht mit "<html>" beginnst. Nimm das ganze HTML-Grundgerüst raus, dann sollte es funktionieren.
Habe ich ja bereits geschrieben das es ohne/vor dem Grundgerüst funktioniert, das bringt mich aber nicht weiter.
Es lässt sich nichts weiter hinzufügen, weder irgendwas Geschriebenes noch eine Textbox um die Lösung eintragen zu können!
Mal ganz von nem Layout abgesehen und das ist mein Problem an der Sache.
Das Bilder nicht mit <html> beginnen ist mir klar, ist auch nicht der Zweck des Grundgerüsts [wink].
sagt dem Browser, dass es sich um ein Bild handelt. Und in Bildern steht nun mal kein HTML.Header ("Content-type: image/png");
Das ganze funktioniert so, dass du die capcha.php ohne weiteren text irgendwo speicherst, diese dann über den <img>-Tag ins HTML-Format einbettest. Du hast also die Datei index.html
und die capcha.php<html> <head> <title>Captchatest</title> </head> <body> <div id="container"> <img src="capcha.php" alt="alternativ" /> <p>beliebiger text</p> <input type="text" name="EinName"> </div> </body> </html>
<?php $moegliche_zeichen = "A B C D E F G H J K M N Q R T U V W X Y 2 3 4 5 7 8"; $kombinationen = explode(" ", $moegliche_zeichen); shuffle ( $kombinationen ); $text = array_slice($kombinationen, 0, 5); $SESSION['captcha-wert'] = $text; Header ("Content-type: image/png"); $bild = ImageCreateFromPNG ("captcha-clock.png"); $farbe_w = ImageColorAllocate ($bild, 255, 255, 255); $farbe_b = ImageColorAllocate ($bild, 0, 0, 0); ImageTTFText ($bild, 32, -30, 140, 70, $farbe_b, "arial.ttf", $text[0]); ImageTTFText ($bild, 32, -90, 180, 130, $farbe_b, "arial.ttf", $text[1]); ImageTTFText ($bild, 32, 0, 130, 210, $farbe_b, "arial.ttf", $text[2]); ImageTTFText ($bild, 32, 45, 80, 190, $farbe_b, "arial.ttf", $text[3]); ImageTTFText ($bild, 32, 99, 80, 120, $farbe_b, "arial.ttf", $text[4]); ImagePng ($bild); ImageDestroy ($bild); ?>
-
Super geilo, habe es hinbekommen, danke vielmals an euch beide.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage