• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Headers already sent...

Status
Für weitere Antworten geschlossen.

Icy

Neues Mitglied
Hallo,

habe ein Problem mit einem Captcha-Script.
Ich habe ein Formular, das ein Captcha enthält. Dieses Captcha funktioniert für sich alleinstehend gut, jedoch nicht in Verbindung mit dem Formular.
Wen ich es einbinde, erhalte ich immer den Fehler:

Warning: Cannot modify header information - headers already sent by...

Das bezieht sich auf die 2. Zeile vom Captcha-Script:

PHP:
header("content-type: image/gif");

Hat wer eine Idee wie ich das umgehen kann und das Script funktionieren könnte?

MfG Icy
 
header() kann nur aufgerufen werden, wenn noch nichts - auch keine Leerzeile o.Ä. - ausgegeben wurde. Überprüf das mal ;)
 
Das Captcha musst du als Bild einbinden:

Code:
Hier steht das Formular...
<img src="captcha.php" alt="" />


Den Text im Captcha kannst du dann z.B. in einer Session übergeben.
 
Hm entweder ich bin einfach nur blöd oder das geht wirklich nicht :(
Also hier mal mein Aufbau:


index.php
PHP:
<?php
  include ("config.php");
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
<title></title>
</head>

<body>

<form method="post" action="index.php?section=new" name="formular">
<table class="entry" cellspacing="0px" border="1px">
    <tr>
        <th colspan="2" class="newhead">Eintrag hinzuf&uuml;gen</td>
    </tr>
    <tr>
        <td class="newleft"><b>Name:</b></td>
        <td class="newright"><input type="text" size="30" name="autor" /></td>
    </tr>
    <tr>
        <td class="newleft"><b>Titel:</b></td>
        <td class="newright"><input type="text" size="30" name="titel" /></td>
    </tr>
    <tr>
        <td class="newleft"><b>Inhalt:</b></td>
        <td class="newright"><textarea cols="26" rows="5" name="content"></textarea></td>
    </tr>
    <tr>
        <td class="newleft"><b>Sicherheitscode:</b></td>
        <td class="newright"><?php include("captcha.php"); ?><br /><input type="text" size="10" name="captcha" /></td>
    </tr>
    <tr>
        <td colspan="2" class="newhead"><input type="submit" size="30" value="Abschicken" />
							         <input type="reset" size="30" value="Zur&uuml;cksetzen" /></td>
    </tr>
</table>
</form>

</body>
</html>

captcha.php:
PHP:
<?php
header("content-type: image/gif");

$x = 1;
$letters = array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
$str = "";
while ($x <= 3) {
  $letter = $letters[rand(1, 26)];
  $number = rand (0, 9);
  $str = $str.$letter.$number;
  $x++;
}

$_SESSION['str'] = $str;

$font = 5;

$necwidth = (strlen($str)*imagefontwidth($font)) + 10;
$necheight = imagefontheight($font) + 15;

$necwidth = 100;

$image = imagecreate($necwidth, $necheight);

$red = imagecolorallocate($image, 255,0,0);
$green = imagecolorallocate($image, 7, 255, 20);
$blue = imagecolorallocate($image, 12, 0, 255);
$yellow = imagecolorallocate($image, 255,255,0);
$black = imagecolorallocate($image, 0, 0, 0);
$white = imagecolorallocate($image, 255,255,255);

imagefill($image,0,0,$black);
imagerectangle($image,10,10,130,20,$yellow);
imagerectangle($image, 40,0,60,40, $blue);
imageline($image, 10,0,10,40,$red);
imageline($image,0,20,140,20,$green);
imageline($image,0,$necheight,$necwidth,0,$blue);

imagestring($image,$font,10,10,$str,$white);

imagegif($image);
imagedestroy($image);

?>

Wenn ich das ob_start(); an den Anfag der index.php setze, kommt wenn ich die index.php aufrufe im FF nur ein Hinweis:
Die Grafik "http://icy.ic.ohost.de/icybook/index.php" kann nicht angezeigt werden, weil sie Fehler enthält.

Wenn ich ob_start(); an den Anfang der captcha.php setze, bekomme ich immer noch den selben Fehler wie vorher (header information already sent...).

Verstehe ich irgendwie nicht :(

MfG Icy
 
Argh tut mir Leid Commodore.
War so lange an meinem letzten Post beschäftigt, da hattest du deinen noch nicht geschrieben ^^
Danke dir, so klappts natürlich (ich idiot -.-).

MfG Icy
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben