Kontaktformular Fehler

Ich habe mir ein Kontaktformular mit einem Generator erstellt. Habe hier mal den Code der für die Frage relevant ist kopiert!

<?php
// Kontaktformular

// Sicherheitsbild (Captcha) erstellen.
// Voraussetzung ist eine installierte GD-Grafikbibliothek auf dem Webserver.
session_start();
ob_start();
if (isset($_GET["captcha"])) {
 $zufallszahl = mt_rand("1111", "9999");
 $_SESSION["captcha_code"] = $zufallszahl;
 $breite = 60; $hoehe = 20;
 $bild = imageCreate($breite, $hoehe);
 imageColorAllocate($bild, 255, 255, 255);
 $farbe = imageColorAllocate($bild, mt_rand("20", "190"), mt_rand("20", "190"), mt_rand("20", "190"));
 for ($zaehler = 0; $zaehler < (($breite * $hoehe) / 8); $zaehler++) {
  imageSetPixel($bild, mt_rand("0", $breite - 9), mt_rand("0", $hoehe), $farbe);
 }
 imageRectangle($bild, 0, 0, $breite - 1, $hoehe - 1, imageColorAllocate($bild, 180, 180, 180));
 imageFilledPolygon($bild, array(60,20, 52,20, 60,0), 3, imageColorAllocate($bild, 200, 200, 200));
 imageString($bild, 5, 10, 2, $zufallszahl, $farbe);
 header("Content-Type: image/png");
 ob_end_clean();
 echo imagePNG($bild);
 imageDestroy($bild);
 exit;
}
ob_end_clean();
?>

Wenn ich auf die Datei kontaktform.php gehe kommt diese Meldung:

[code]Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /users/likelist/www/sites/kontaktform.php:2) in /users/likelist/www/sites/kontaktform.php on line 7

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /users/likelist/www/sites/kontaktform.php:2) in /users/likelist/www/sites/kontaktform.php on line 7[/code]

Was kann ich dagegen tun?

MfG Mr.Jonas

Der Fehler sagt, daß vor dem Ausführen des PHP-Codes schon eine Ausgabe stattfindet, was nicht sein darf. Um zu wissen wo der Fehler liegt, muß du schon alles Relevante, also auch was vor dem PHP kommt, posten.

Hier:

<?php
// Kontaktformular

// Sicherheitsbild (Captcha) erstellen.
// Voraussetzung ist eine installierte GD-Grafikbibliothek auf dem Webserver.
session_start();
ob_start();
if (isset($_GET["captcha"])) {
 $zufallszahl = mt_rand("1111", "9999");
 $_SESSION["captcha_code"] = $zufallszahl;
 $breite = 60; $hoehe = 20;
 $bild = imageCreate($breite, $hoehe);
 imageColorAllocate($bild, 255, 255, 255);
 $farbe = imageColorAllocate($bild, mt_rand("20", "190"), mt_rand("20", "190"), mt_rand("20", "190"));
 for ($zaehler = 0; $zaehler < (($breite * $hoehe) / 8); $zaehler++) {
  imageSetPixel($bild, mt_rand("0", $breite - 9), mt_rand("0", $hoehe), $farbe);
 }
 imageRectangle($bild, 0, 0, $breite - 1, $hoehe - 1, imageColorAllocate($bild, 180, 180, 180));
 imageFilledPolygon($bild, array(60,20, 52,20, 60,0), 3, imageColorAllocate($bild, 200, 200, 200));
 imageString($bild, 5, 10, 2, $zufallszahl, $farbe);
 header("Content-Type: image/png");
 ob_end_clean();
 echo imagePNG($bild);
 imageDestroy($bild);
 exit;
}
ob_end_clean();
?>
<!DOCTYPE html>
<html>
 <head>
 <title></title>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <meta http-equiv="Content-Style-Type" content="text/css">
 <meta name="robots" content="noindex,nofollow">

 <style type="text/css">
 /* Formular Stylesheet */
 body, textarea, table {
  font-family: Verdana, Sans-Serif;
  font-size: 12px;
  color: #000000;
 }
 table {
  margin: Auto;
  border-spacing: 1px;
 }
 th, td {
  padding: 3px;
 }
 label {
  cursor: Pointer;
 }
 .pflichtfeld {
  color: #FF0000;
  border: 0px;
 }
 .hintergrund {
  color: #000000;
  background-color: #36B3B3;
 }
 .danke, .danke a {
  color: #000000;
  padding: 10px;
  width: 500px;
  margin: Auto;
  margin-top: 200px;
 }

 /* Captcha (Sicherheitsbild) */
 #captcha {
  width: 60px;
  height: 20px;
  vertical-align: Bottom;
  cursor: Pointer;
 }

 /* Tabelleneffekt */ 
 .hintergrund:hover {
  background-color: #25A2A2;
 }
 </style>

 </head>
 <body>

<?php
/*
  Kontaktformular - Erstellt am: 30.05.2012 - Sprache: Deutsch -
  Zeichenkodierung: ISO-8859-1 - Scriptsprache: PHP 5.

  Lesen Sie diesen Quelltext bitte gründlich durch, dieser ist mit
  Kommentaren versehen um das anpassen des Formulars zu erleichtern.
  Hilfe und Anleitung zum Einbau: www.webbausteine.de/faq/anleitung.php

  Die Nutzung ist für die private und gewerbliche Homepage kostenlos.
  Es wird kein Support für Probleme geben, die bei der Anpassung
  des Scripts entstehen. Verbesserungsvorschläge und Hinweise geben
  Sie in unser Kontaktformular auf der Website ein.

  Wenn Sie mit dem Formular zufrieden sind, würden wir uns über einen 
  Link von Ihrer Seite sehr freuen. — Viel Spaß bei der Verwendung!
  www.webbausteine.de - Kontaktformular Generator
*/

// Ihre E-Mail-Adresse
$mailto = "info223@spambog.com";

// Ihre Webseite (Startseite). Nach dem absenden der E-Mail
// gelangt der Besucher über einen Link auf Ihre Startseite.
$url = "http://likelist.de.vu";

// Fortgeschrittene Anwender können ab hier Änderungen vornehmen.
error_reporting(E_ALL);
$eingabefehler = ""; // Bitte leer lassen!
$datum = date("d.m.Y H:i");
$host = getHostByAddr($_SERVER["REMOTE_ADDR"]);
$name = isset($_POST["name"]) ? $_POST["name"] : "";
$mailfrom = isset($_POST["mailfrom"]) ? $_POST["mailfrom"] : "";
$betreff = isset($_POST["betreff"]) ? $_POST["betreff"] : "";
$nachricht = isset($_POST["nachricht"]) ? $_POST["nachricht"] : "";

// Auswahlliste "Betreff"
$array = array(
"Hilfe",
"Kritik",
"Partner werden",
"Sonstiges",
);
$betreffauswahl = "\n   <select name='betreff' id='Betreff' size='1'>";
foreach ($array as $value) {
 $betreffauswahl .= "\n    <option value='" . $value . "'" .
 ((isset($_POST["betreff"]) ? $_POST["betreff"] : "") == $value ?
 " selected='selected'" : "") .  ">" . $value . "</option>";
}
$betreffauswahl .= "\n   </select>\n  ";

// Spamschutz: Captcha
$captcha = $_SERVER["SCRIPT_NAME"]; // Sicherheitsbild-Datei

// Formular erstellen
// Innerhalb des Formulars dürfen nur einfache Anführungszeichen verwendet werden!
$formular = "<form action='" . $_SERVER["SCRIPT_NAME"] . "' method='post'>
<table>
 <tr><td colspan='2' class='pflichtfeld'><!-- Fehleranzeige --></td></tr>
 <tr class='hintergrund'>
  <td><label for='Name'>Name: <span class='pflichtfeld'>*</span></label></td>
  <td><input type='text' size='35' name='name' value='" . $name . "' id='Name'></td>
 </tr>
 <tr class='hintergrund'>
  <td><label for='Email'>E-Mail: <span class='pflichtfeld'>*</span></label></td>
  <td><input type='text' size='45' name='mailfrom' value='" . $mailfrom . "' id='Email'></td>
 </tr>
 <tr class='hintergrund'>
  <td><label for='Betreff'>Betreff:</label></td>
  <td>" . $betreffauswahl . "</td>
 </tr>
 <tr class='hintergrund'>
  <td colspan='2'><label for='Nachricht'>Nachricht: <span class='pflichtfeld'>*</span></label><br>
  <textarea name='nachricht' rows='6' cols='60' id='Nachricht'>" . $nachricht . "</textarea></td>
 </tr>
 <tr class='hintergrund'>
  <td colspan='2'>
   <label for='Spamschutz'>Spamschutz: <span class='pflichtfeld'>*</span> &nbsp;</label>
   
    <img src='" . $captcha . "?captcha&amp;rand=" . rand() . "' id='captcha' title='Neues Sicherheitsbild laden!' alt='Sicherheitsbild'
     onclick='var img=document.images[\"captcha\"]; img.src=img.src.substring(0,img.src.lastIndexOf(\"?\"))+\"?captcha&amp;rand=\"+Math.random()*1000;'>
    &nbsp; &#61; &nbsp; <input type='text' name='zip' size='6' id='Spamschutz'>
   </td>
 </tr>
 <tr class='hintergrund'>
  <th colspan='2'>
   <br><span class='pflichtfeld'>&#10034;</span>
   <small>Bitte alle Pflichtfelder ausfüllen!</small> &nbsp; &nbsp; 
   <input type='submit' name='sendung' value='Abschicken!'>
  </th>
 </tr>
</table>
</form>\n";

// Wurde das Formular abgesendet
if ($_SERVER["REQUEST_METHOD"] == "POST" || isset($_POST["sendung"])) {

 // Pflichtfelder überprüfen
 // Die Meldungen müssen hier eventuell angepasst werden.
 if (strlen($name) <= 2) $eingabefehler .= "&bull; Name fehlt!<br>";
 if (filter_var($mailfrom, FILTER_VALIDATE_EMAIL) === false) $eingabefehler .= "&bull; Fehler in der E-Mail-Adresse!<br>";
 if (strlen($nachricht) <= 19) $eingabefehler .= "&bull; Die Nachricht " . ((strlen($nachricht) == 0) ? " fehlt" : " ist zu kurz") . " (min. 20 Zeichen)!<br>";
 if (($_SESSION["captcha_code"] == 0) OR ($_POST["zip"] != $_SESSION["captcha_code"])) $eingabefehler .= "&bull; Der Spamschutz ist leider falsch!<br>";

 // Sind keine Eingabefehler vorhanden
 if ($eingabefehler == "") {

  // Diese Nachricht wird an Ihre E-Mail-Adresse gesendet.
  // Text-Format - \n = neue Zeile.
  $text = "
  Gesendet am: $datum \n

  ====\n

  IP: $_SERVER[REMOTE_ADDR] \n

  Host: $host \n

  ====

  Name: $name \n

  E-Mail: $mailfrom \n

  Betreff: $betreff \n

  Nachricht: $nachricht \n\n

  ====

  ";

  // E-Mail versenden
  $kopfzeile = "MIME-Version: 1.0;\nFrom: " . $mailfrom . "\n";
  $kopfzeile .= "Content-Type: text/plain; Charset=ISO-8859-1;\n";
  if (mail($mailto, $betreff, $text, $kopfzeile)) {

   // Bestätigung der E-Mail
   echo "<p class='hintergrund danke'>" . 
   "Vielen Dank, die Nachricht wurde versendet.<br><br>";

   // Link zur Startseite
   echo "<a href='" . $url . "' target='_top'>Weiter zur Startseite</a></p>";
  }
  else {

   // Wenn die Nachricht nicht versendet werden konnte,
   // wird die E-Mail-Adresse für den direkten Kontakt eingeblendet.
   echo "<p class='hintergrund danke'>Beim Senden der Nachricht ist ein Fehler aufgetreten!<br>" .
   "Bitte wenden Sie sich direkt an: <a href='mailto:" . $mailto . "'>" . $mailto . "</a></p>";
  }
 }
 else {

  // Eingabefehler und Formular ausgeben
  echo str_replace("<!-- Fehleranzeige -->",
  "<b>Die Nachricht wurde aus folgendem Grund nicht versendet:</b><br>" .
  $eingabefehler, $formular);
 }
}
else {

 // Formular ausgeben
 echo $formular;
}
?>

 </body>
</html>

Da sonst nichts vor dem PHP steht, gehe ich davon aus, daß noch irgendwelche Leerzeichen oder so davor sind, die das Problem verursachen.

Hab den Erklärungstext vor dem // weg gemacht und jetzt funktioniert es!

Kann geschlossen werden!