kostenloser Webspace werbefrei: lima-city


Bilder generieren

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    trickdieb

    Kostenloser Webspace von trickdieb

    trickdieb hat kostenlosen Webspace.

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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
  4. Autor dieses Themas

    trickdieb

    Kostenloser Webspace von trickdieb

    trickdieb hat kostenlosen Webspace.

    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:].

    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
  5. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    trickdieb schrieb:
    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.
    Du machst eine eigene HTML-Seite, bei der das "Bild" eingebunden wird, wobei das "Bild" die PHP-Datei ist (ohne HTML-Grundgerüst!).
  6. trickdieb schrieb:
    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].
    Du hast folgendes Problem:
    Header ("Content-type: image/png");
    sagt dem Browser, dass es sich um ein Bild handelt. Und in Bildern steht nun mal kein HTML.

    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
    <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>
    und die capcha.php
    <?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);
    ?>
  7. Autor dieses Themas

    trickdieb

    Kostenloser Webspace von trickdieb

    trickdieb hat kostenlosen Webspace.

    Super geilo, habe es hinbekommen, danke vielmals an euch beide.
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!