PPCNUX / mcnix

Diskussionen rund um Linux, PowerPC und Apple
Aktuelle Zeit: Di 21 Mai 2013, 05:19:25

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: HEADER Problem bei Übergabe.
BeitragVerfasst: Sa 05 Juli 2003, 13:17:12 
Offline
PPCNUX Team
Benutzeravatar

Registriert: Di 09 Juli 2002, 13:23:30
Beiträge: 1459
Wohnort: München - Denklingen
Ich habe ein Problem bei einem kleinen Forum. Sobald ich das Formular ausgefüllt habe und abschicke bekomme ich ein "Header alredy send". In der Meldung sagt er mir geht es um die Zeile:

Code:
header("Location: lesen.php?eintrag=". mysql_insert_id());


Hier ist einmal die ganze Datei:

Code:
<?php
include_once("inc/header.inc.php");

include("funktionen.php");     // Nützliche Funktionen importieren

unset($errors);  // Ein Array in das wir Fehlermeldungen schreiben
unset($Thread);  // Variablen die evt. uninitialisiert benutzt werden, löschen

$connid = DBverbinden(); // Datenbankverbindung herstellen

if(!isset($eintrag) || $eintrag < 0) $eintrag = 0;
else $eintrag = (int)$eintrag; // $eintrag auf einen vernünftigen Wert setzen

if($bearbeitet != true && $eintrag != 0) { // Es wurden keine Eingaben gemacht, und es soll eine Antwort verfasst werden
  $result = mysql_query("SELECT Betreff, Text FROM Forum WHERE ID =".$eintrag, $connid);
  if(!$result) die("Datenbank konnte nicht abgefragt werden");
  if(mysql_num_rows($result) != 1) { // Eintrag entweder nicht vorhanden oder mehrere Einträge mit derselben ID (hmm?)
   $errors[] = "Der Eintrag auf den Sie antworten wollen ist nicht in der Datenbank.
                Entweder existierte er nie und Sie spielen grade an den Formularparametern rum
                oder er wurde in der Zwischenzeit gelöscht.
                Wenn Sie dieses Formular abschicken, wird ein neuer Thread eröffnet.";
   $eintrag = 0; // Auf "neuen Thread" setzen
  } else {
   $eintragsdaten = mysql_fetch_array($result);
   $betreff = $eintragsdaten["Betreff"];  // Alte Betreffzeile übernehmen
   $text = $eintragsdaten["Text"]; // Alten Text übernehmen
   if(get_magic_quotes_runtime())
    $text = stripslashes($text); // Die Slashes die beim Auslesen freundlicherweise hinzugefügt werden entfernen
   $text = wordwrap($text); // Nachrichtentext automatisch umbrechen
   $text = preg_replace("/^/m", "> ", $text); // Zitatzeichen an den Anfang jeder Zeile stellen
   $text = addslashes($text); // Gleiche Ausgangsbedingungen für alle Variablen wiederherstellen
  }
}

if($abschicken != "") { // Nachricht soll abgeschickt werden
  // Allgemeine Ã?berprüfungen
  if(!isset($name) || $name == "")
   $errors[] = "Es wurde kein Name eingegeben. Bitte geben Sie einen Namen ein.";
  if(!isset($email) || $email == "")
   $errors[] = "Es wurde keine Email-Addresse eingegeben. Bitte geben Sie eine Email-Addresse ein.";
  else {
   $email = trim($email); // Leerzeichen vor und hinter der Email-Addresse abschneiden
   if(!preg_match("/^[^@]+@.+\.\D{2,5}$/", $email)) // Ã?berprüfung ob die Email-Addresse das Format name@domain.tld hat
    $errors[] = "Die eingebene Email-Addresse sieht nicht richtig aus.";
  }
  if(!isset($betreff) || $betreff == "")
   $errors[] = "Es wurde keine Betreff-Zeile eingegeben. Bitte geben Sie eine Betreffzeile ein.";
  if($eintrag != 0) { // Es soll eine Antwort verfasst werden
   $result = mysql_query("SELECT TID FROM Forum WHERE ID=".$eintrag, $connid);
   if(!$result) die("Datenbank konnte nicht abgefragt werden");
   if(mysql_num_rows($result) != 1) { // Da ist irgendwas faul
    $errors[] = "Der Eintrag auf den Sie antworten wollen ist nicht in der Datenbank.
                 Entweder existierte er nie und Sie spielen grade am Formular rum
                 oder er wurde zwischenzeitlich gelöscht.
                 Wenn Sie das Formular erneut abschicken wird ein neuer Thread eröffnet.";
    $eintrag = 0;
   } else {
    list($Thread) = mysql_fetch_row($result);
   }
  }

  if(!isset($errors)) { // Keine Fehler bisher, let's rock
   if($eintrag == 0) $Thread = 0; // neuer Thread
   $result = mysql_query("INSERT INTO Forum (PID, TID, AutorName, Betreff, AutorEmail, Text)
      VALUES (".$eintrag.",".$Thread.",'".$name."','".$betreff."',
             '".$email."','".$text."')", $connid);
   if(!$result) die("Konnte den neuen Eintrag nicht in die Datenbank schreiben");
   if($eintrag == 0) // Jetzt die Thread-ID des neuen Threads korrekt setzen
    if(!mysql_query("UPDATE Forum SET TID=ID, Zeitpunkt=Zeitpunkt WHERE ID = LAST_INSERT_ID()", $connid))
     die("Konnte die Thread-ID in der Datenbank nicht aktualisieren.
         Die Datenbasis könnte inkonsistent sein.");

   // Wenn wir noch leben, dann ist alles glatt gegangen.
   header("Location: lesen.php?eintrag=". mysql_insert_id()); // Benutzer auf den neuen Eintrag umleiten
   exit(); // Skript beenden
  }
}

// HTML-Teil
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<?php if($eintrag == 0) { ?>
  <title>Neuen Eintrag verfassen</title>
<?php } else { ?>
  <title>Antwort verfassen</title>
<?php } ?>
</head>
<body>
<?php if($eintrag == 0) { ?>
Neuen Eintrag verfassen<br><br>
<?php } else { ?>
Antwort verfassen<br><br>
  Im Formular ist der Eintrag auf den Sie antworten noch einmal komplett zitiert.
   Bitte l&ouml;schen Sie beim Beantworten nicht ben&ouml;tigte Zitate.<br><br>
<?php } ?>
<?php if(isset($errors)) { /* es sind Fehler aufgetreten */?>
Fehler:
  <p>Beim Bearbeiten Ihrer Anfrage sind folgende Fehler aufgetreten:</p>
  <ul>
<?php foreach($errors as $error) { /* alle Fehler durchgehen */ ?>
   <li><?php wp($error);?></li>
<?php } ?>
<?php } ?>
  </ul>
  <!-- Jetzt das Formular -->
Nachricht schreiben<br><br>
  <form action="neu.php" method="POST">
   <!-- Der Eintrag auf den geantwortet wird, oder 0 für neuen Thread -->
   <input type="hidden" name="eintrag" value="<?php wp($eintrag);?>">

   <!-- Damit die eingegeben Daten nicht aus der Datenbank überschrieben werden -->
   <input type="hidden" name="bearbeitet" value="true">

   <table>
    <tr>
     <td>Name: </td><td><input type="text" size="40" class="formelementsservice" name="name" value="<?php wp($name);?>"></td>
    </tr>
    <tr>
     <td>Email: </td><td><input type="text" size="40" class="formelementsservice" name="email" value="<?php wp($email);?>"></td>
    </tr>
    <tr>
     <td>Betreff: </td><td><input type="text" size="40" class="formelementsservice" name="betreff" value="<?php wp($betreff);?>"></td>
    </tr>
    <tr valign="top">
     <td>Text: </td>
     <td>
      <textarea cols="40" rows="10" wrap="virtual" class="formelementsservice" name="text"><?php wp($text);?></textarea>
     </td>
    </tr>
    <tr>
     <td>
<?php if($eintrag == 0) { ?>
      <a href="index_forum.php"><small>Forum</small></a>
<?php } else { ?>
      <a href="lesen.php?eintrag=<?php wp($eintrag);?>">Abbrechen</a>
<?php } ?>
     </td>
     <td><input type="submit" name="abschicken"  class="formelementsservice" value="Abschicken"></td>
    </tr>
   </table>
  </form>
</body>
</html>

<?php    include_once("inc/footer.inc.php"); ?>

_________________
L I N U X: Life Is Now Unusually Xellerated


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: HEADER Problem bei Übergabe.
BeitragVerfasst: Sa 05 Juli 2003, 14:08:10 
Offline
PPCNUX Team
Benutzeravatar

Registriert: Di 09 Juli 2002, 16:57:13
Beiträge: 501
Wohnort: Tal der Ahnungslosen
benedikt hat geschrieben:
Ich habe ein Problem bei einem kleinen Forum. Sobald ich das Formular ausgefüllt habe und abschicke bekomme ich ein "Header alredy send". In der Meldung sagt er mir geht es um die Zeile:


Das Problem ist, dass Du pro Seite nur einen Header senden kannst. Zu Beginn wird die Datei inc/header.php eingebunden. Was wird denn da gemacht? Erfolgen da schon Ausgaben an den Client/Browser/User oder wie auch immer? Denn dann wird automatisch ein Header generiert und an den Browser gesendet.

Später willst Du aber noch mal einen Header senden (weiter unten im Skript). Das kollidiert aber mit den Regeln des HTTP-Protokolls, weil wie gesagt nur ein Header pro Seite/Aufruf erlaubt ist.

Du müsstet mal den Inhalt der inc/header.php posten, so dass man weiß, was da passiert. Aber ich nehme an, dass da schon was an den Client rausgeht und somit der Header automatisch generiert wird.

Lars


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Mi 09 Juli 2003, 16:07:31 
Offline
PPCNUX Team
Benutzeravatar

Registriert: Di 09 Juli 2002, 13:23:30
Beiträge: 1459
Wohnort: München - Denklingen
header hat nur den oberen teil des designs drinnen incl 1. mysql verbindung

_________________
L I N U X: Life Is Now Unusually Xellerated


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: Keine Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group. Color scheme by ColorizeIt.
Deutsche Übersetzung durch phpBB.de