Hallo,
ich habe mir eine Mini-Klasse geschrieben in PHP (siehe unten).
Ich möchte damit folgendes erreichen:
In einer beliebigen anderen php-Datei möchte ich mit
$cap = new captcha(50,50,"Beispiel");
Jetzt war mein Ziel, dieses "programmierte" Bild an einer gewählen Stelle mitten in der Seite auszugeben. Also habe ich mitten in einem Formular die Captcha-Abfrage. Das sieht dann so aus:
Code:
<input type="text" name="captcha_input" />
<?php
$cap->create();
?>
Jetzt bekomme ich an der Stelle, wo eigentlich das Bild stehen soll, den Fehler:
Cannot modify header information - headers already sent by ...
Also vorher erfolgt bereits eine Textausgabe. Ich benötige aber für das Bild die Header-Information.
Wie bekomme ich es also hin, dass ich mit $cap->create() an jeder Stelle der Seite ein Bild darstellen kann, bzw. was muss ich in meiner Klasse ändern ?
Vielen Dank für Eure Hilfe
--------------------- QUELLCODE ------------------------
Code:
<?php
/* Captcha erstellen
@author buddyhu
@params int Hoehe
@params int Breite
@params string Text
*/
class captcha {
var $hoehe = 0;
var $breite = 0;
var $text = "";
/*
Konstruktor
*/
function captcha($breite, $hoehe, $text) {
$this->hoehe = $hoehe;
$this->breite = $breite;
$this->text = $text;
}
function create() {
$img = imagecreate($this->hoehe, $this->breite);
$bg = imagecolorallocate($img,0,0,0);
$white = imagecolorallocate($img,255,255,255);
imagestring($img,4,1,1,"$this->text",$white);
header("Content-Type: image/jpeg");
imagejpeg($img);
}
function destroy() {
imagedestroy($img);
}
}
?>