Captcha-Funktion + Textdatei Zeilenumbruch

Hallo ihr,

ich habe im Moment ein kleines Problem. Ich möchte aus einer Textdatei gewisse Sprüche rauslesen, die dann als Bild ausgegeben werden sollen.

Das Ganze funktioniert wunderbar, allerdings ist der Text meist stark abgeschnitten, da der Inhalt einfach viel zu lang ist.

Hier erstmal der Quellcode, der relevant ist:

PHP:
<?php

/*-------------------------------------------------------------- 
Artikel: Sicherheitsfeld mit PHP, GDlib und Freetype ----
Internet: www.contentcharge.de , Mail: info@contentcharge.de
Disclaimer: Fuer den Einsatz dieses Scriptes und
evtl. daraus resultierenden Folgen uebernehmen wir 
keine Haftung.

Article: Securityfield (captcha) with PHP, GDlib and Freetype
Contact: www.contentcharge.de, Mail: info@contentcharge.de
Disclaimer: We are not responsible for the use of this ressource
in part or whole. So use at your own risk.

Copyright 2004 Contentcharge-Media, Christian Lehmann
---------------------------------------------------------------*/

// Öffnen der Textdatei


//DE: Vergleichs- bzw. Inhaltwerte
//ENG: Possible textfield values
$werte = file('file.txt');




//DE: Wenn das Script die Eingabe Checken soll
//ENG: The script needs to check the input of the formfield
if($_GET['doit'] == "check"){
    
    if(in_array($_POST['sec_eingabe'],$werte)){
        
        //DE: Datum der Sendung
        //ENG: Current date 
        $datum = date("d.m.Y - H:i");
        
        //DE: Hier bitte die Empfaenger-Mailadresse einfuegen
        //ENG: Change the E-Mail to your adress -- We get a bunch of Testmails currently ;)
        $empfaenger = "lehmann@contentcharge.de";
        
        //DE: Zeilenende ersetzen
        //ENG: Replace end of line
        $suchen = "\r";      
        $ersetzen = "\n";
        $kommentarp = str_replace($suchen,$ersetzen,$_POST["memo"]);
        $betreff = $_POST['betreff'];
        
        //DE: Ausfuehren der Mailfunktion
        //ENG: Send the Mail
        if(mail("$empfaenger", "$betreff", 
        "
        Name: ".$_POST["name"]."
        Memo: ".$kommentarp."
        Datum und Zeit: $datum 
        ")){
        print('DE: Versand war erfolgreich');
        print('ENG: Success');
        }
        
    }
    else {
        print('DE: BITTE PRUEFEN SIE IHRE EINGABE IM SICHERHEITSFELD');
        print('ENG: PLEASE CHECK YOUR SECURITYFIELD INPUT');
    }
} 

//DE: Wenn das Script ein Bild generieren soll
//ENG: The script needs to generate the picture
elseif ($_GET['doit'] == "gen"){
    header('Content-type: image/png');
    $img = ImageCreateFromPNG('bg.png');
    $text= $werte[rand(0,count($werte)-1)];
    $color = ImageColorAllocate($img, 0, 0, 0);
    $ttf = 'arialf';
    $ttfsize = 8; 
    $angle = 0; 
    $text_x = 5;
    $text_y = 30;
    imagettftext($img, $ttfsize, $angle, $text_x, $text_y, $color, $ttf, $text);
    imagepng($img);
    imagedestroy($img);
}

?>


Wie stelle ich es an, dass die Sätze in der "file.txt" Datei nach einer bestimmten Anzahl von Zeichen umgebrochen werden, sodass sich der Text in eine weitere Zeile aufteilt?



Ich bin am verzweifeln :(



Ich danke euch schon mal im Voraus :)



Tschau David
 
Hallo,

danke erstmal für die Hilfe.
Diesen Befehl kannte ich noch nicht, habe ich nicht gefunden.

Wie stelle ich das in meinem Fall nun an? mit einer if-Abfrage, ob der Text länger als z.B. 25 Zeichen ist, dann Zeilenumbruch?
Wenn ja, wie sollte das dann ungefähr aussehen? Tut mir Leid, in PHP kenne ich mich kaum aus :(



Tschau David
 
Hallo,

hier noch ein Beispiel:
PHP:
<?php

     $werte = file('file.txt');
     for($i=0;$i<count($werte);$i++){                
         $neuerwert = wordwrap( $werte[$i], 30, "<br />\n" );
         echo $neuerwert;
     }

?>

Gruß

RS9999:)
 
Hallo,

anbei mein Vorschlag:

PHP:
<?php

/*-------------------------------------------------------------- 
Artikel: Sicherheitsfeld mit PHP, GDlib und Freetype ----
Internet: www.contentcharge.de , Mail: info@contentcharge.de
Disclaimer: Fuer den Einsatz dieses Scriptes und
evtl. daraus resultierenden Folgen uebernehmen wir 
keine Haftung.

Article: Securityfield (captcha) with PHP, GDlib and Freetype
Contact: www.contentcharge.de, Mail: info@contentcharge.de
Disclaimer: We are not responsible for the use of this ressource
in part or whole. So use at your own risk.

Copyright 2004 Contentcharge-Media, Christian Lehmann
---------------------------------------------------------------*/

// Öffnen der Textdatei


//DE: Vergleichs- bzw. Inhaltwerte
//ENG: Possible textfield values
$werte = file('file.txt');




//DE: Wenn das Script die Eingabe Checken soll
//ENG: The script needs to check the input of the formfield
if($_GET['doit'] == "check"){
    
    if(in_array($_POST['sec_eingabe'],$werte)){
        
        //DE: Datum der Sendung
        //ENG: Current date 
        $datum = date("d.m.Y - H:i");
        
        //DE: Hier bitte die Empfaenger-Mailadresse einfuegen
        //ENG: Change the E-Mail to your adress -- We get a bunch of Testmails currently ;)
        $empfaenger = "lehmann@contentcharge.de";
        
        //DE: Zeilenende ersetzen
        //ENG: Replace end of line
        $suchen = "\r";      
        $ersetzen = "\n";
        $kommentarp = str_replace($suchen,$ersetzen,$_POST["memo"]);
        $betreff = $_POST['betreff'];
        
        //DE: Ausfuehren der Mailfunktion
        //ENG: Send the Mail
        if(mail("$empfaenger", "$betreff", 
        "
        Name: ".$_POST["name"]."
        Memo: ".$kommentarp."
        Datum und Zeit: $datum 
        ")){
        print('DE: Versand war erfolgreich');
        print('ENG: Success');
        }
        
    }
    else {
        print('DE: BITTE PRUEFEN SIE IHRE EINGABE IM SICHERHEITSFELD');
        print('ENG: PLEASE CHECK YOUR SECURITYFIELD INPUT');
    }
} 

//DE: Wenn das Script ein Bild generieren soll
//ENG: The script needs to generate the picture
     elseif ($_GET['doit'] == "gen"){
     $text= rand(0,count($werte)-1);
     $text= wordwrap( $werte[$text], 30, "\n" );
     $img = ImageCreateFromPNG('bg.png');
     $color = ImageColorAllocate($img, 0, 0, 0);
     $ttf = 'arialf';
     $ttfsize = 8; 
     $angle = 0; 
     $text_x = 5;
     $text_y = 30;
     imagettftext($img, $ttfsize, $angle, $text_x, $text_y, $color, $ttf, $text);
     header("Content-type:image/png");
     imagepng($img);
}

?>
Gruß

RS9999:)
 
Hallo,

danke nochmal für deine Hilfe. Leider hat es immer noch nicht hin, nun zeigt er gar kein Bild mehr an!
Ich habe es jetzt bereits auf 2 verschiedenen Webspaces getestet, alles ist installiert was benötigt wird. Funktioniert immer noch nicht :(
 
Hallo,

also ich sende Dir jetzt diesen CODE damit Du das einmal ohne die mail() Function testen kannst:
PHP:
<?php
     $werte = file('file.txt');
     $text= rand(0,count($werte)-1);
     $text= wordwrap( $werte[$text], 30, "\n" );
     $img = ImageCreateFromPNG('bg.png');
     $color = ImageColorAllocate($img, 0, 0, 0);
     $ttf = 'arialf';
     $ttfsize = 8;
     $angle = 0;
     $text_x = 5;
     $text_y = 30;
     imagettftext($img, $ttfsize, $angle, $text_x, $text_y, $color, $ttf, $text);
     header("Content-type:image/png");
     imagepng($img);
     imagedestroy($img); 
?>
Berichte bitte, was Du angezeigt bekommst, bei mir funktioniert das wunderbar!

Gruß

RS9999:)
 
Zuletzt bearbeitet:
Vielen Dank RS9999, du hast mir super geholfen!
Bis ich auf den Fehler gekommen bin hats jetzt eine Weile gedauert. Die Schrift war anders, als ich es lokal ausprobiert habe, hat er mir eine Fehlermeldung ausgegeben.
Der Name der Schrift war "arialf" statt "arialf" und somit ging es nicht.

Schnell geändert und schon hat es hingehaun!


Ich danke nochmals und setzte es hiermit auf erledigt!



Tschau David
 
Zurück