tutorials.de Buch-Aktion 02/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
482
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Katzehuhn
    Katzehuhn Katzehuhn ist offline Mitglied Gold
    Registriert seit
    Mar 2005
    Beiträge
    213
    Ich versteh den Befehl Header Location einfach nicht, ab und zu funktioniert er und ab u zu wieder nicht zb:

    Ich hab stehen:
    PHP-Code:
      
      header
    ("Location: index.php?site=status");
      
    $statusup "";
          
    $hero "";
          
    $hp ""
    es funktioniert, wenn ich header location als letztes stehen hab kommt meldung, header already send by..

    kann mir jemand erklären wie dieser Befehl funktioniert? danke
    edit: wenn ich bei meinen Script dieses echo lösche funktioniert der header befehl ( er steht bei ner if abfrage u refresht die seite wenn bestimmte variablen gegeben sind)
    PHP-Code:
     echo "<tr><td><b>Helm</b></td><td><b>Brust</b></td><td><b>R. Hand</b></td><td><b>L. Hand</b></td><td><b>Hose</b></td><td><b>L. Arm</b></td><td><b>R. Arm</b></td><tr>"
    Geändert von Katzehuhn (19.06.05 um 02:09 Uhr)
     

  2. #2
    chinese1 chinese1 ist offline Mitglied Bronze
    Registriert seit
    Jun 2005
    Beiträge
    25
    Hallo, du benutzt einen header befehl. Dieser muss vor jeder anderen Art Code ausgeführt werden. Das heißt wenn du z.b. ne seite hast wo drin steht:

    PHP-Code:
    <?php
    echo "<center>Hallo Test</center>";

    header("Location: index.php?site=status");

    ?>
    So wird es nicht funktionieren, da nun schon ein header gesendet wurde. So würde es gehen:
    PHP-Code:
    <?php

    header
    ("Location: index.php?site=status");

    echo 
    "<center>Hallo Test</center>";

    ?>
    Gruß
    Chan
     

  3. #3
    Avatar von Katzehuhn
    Katzehuhn Katzehuhn ist offline Mitglied Gold
    Registriert seit
    Mar 2005
    Beiträge
    213
    bei mir steht der header befehl in eigentlich jeden Script am Ende und das funktioniert? gibts net ne andere möglichkeit ne Seite dann automatisch aufzurufen? da header befehl macht eigentlich immer nur probleme ( die meta refresh lösung geht net u js mag ich ma auslassen)
     

  4. #4
    rootssw rootssw ist offline Mitglied Platin
    Registriert seit
    Aug 2003
    Beiträge
    593
    Hallo!

    Das schöne an einer Fehlermeldung ist, dass man diese lesen kann!

    Mit diesem Befehl werden HTTP-Header an den Browser geschickt. Diese müssen immer vor dem Inhalt der Webseite (o. ä.) gesendet werden. Wird aber versucht, einen Header nach dem Senden von Inhalt an den Browser zu schicken, kommt diese Fehlermeldung.
    Am einfachsten ist es, die Ausgabenpufferung zu aktivieren, um den Inhalt der Seite (das, was du per echo ausgibst ) erst dann an den Browser senden zu lassen, wenn das Script komplett durchlaufen ist.
    Dazu musst du das am Anfang des Scripts schreiben (es dürfen keine Leerzeichen, Kommentare o. a. davor stehen):

    PHP-Code:
    <?php
    ob_start 
    (); // Pufferung aktivieren
    ?>
    Das muss ans Ende des Scripts:

    PHP-Code:
    <?php
    ob_end_flush 
    () // Pufferung deaktivieren und Inhalt an den Browser senden
    ?>
    PS:
    Nachdem du den Header gesendet hast, solltest du das Script ohne Ausgabe direkt beenden. Beispiel:

    PHP-Code:
    <?php
    ob_start 
    ();

    if (
    $_GET['site'] == 'status')
    {
        
    header ('Location: index.php?site=status');
        exit;
    }

    echo 
    'Wilkommen auf meiner Seite';

    ob_end_flush ();
    ?>
     
    <?php if ($sein || !$sein) echo "Das ist hier die Frage."; ?>

  5. #5
    chinese1 chinese1 ist offline Mitglied Bronze
    Registriert seit
    Jun 2005
    Beiträge
    25
    Wenn man den header richtig setzt ist er eigentlich zuverlässig

    Aber als alternative kann man im php code auch Meta benutzen also Beispiel:

    PHP-Code:
    echo "<meta http-equiv=\"refresh\" content=\"3; URL=index.php\">"
    Greetz
     

  6. #6
    rootssw rootssw ist offline Mitglied Platin
    Registriert seit
    Aug 2003
    Beiträge
    593
    Naja, das ist aber auch nicht DIE Lösung!
    Was ist denn, wenn bereits der Header-Tag bereits beendet wurde?
    Wenn MetaRefresh, dann lieber auch mit PHP-Headern:

    PHP-Code:
    header('Refresh: 5; url=http://domain.net/url.php'); 
     
    <?php if ($sein || !$sein) echo "Das ist hier die Frage."; ?>

  7. #7
    chinese1 chinese1 ist offline Mitglied Bronze
    Registriert seit
    Jun 2005
    Beiträge
    25
    Ja root, das weiß ich auch aber es ist eine einfache Lösung die funktioniert Vor allem für leute die noch nicht so viel Kenntnisse in PHP haben. Woher soll ein anfänger wissen wann und wo man das header Tag richtig setzt?
     

  8. #8
    rootssw rootssw ist offline Mitglied Platin
    Registriert seit
    Aug 2003
    Beiträge
    593
    Naja, woher kann man soetwas erfahren?
    Wie wer's denn hiermit?

    Beachten Sie, dass header() aufgerufen werden muss, bevor eine Ausgabe gesendet wurde, egal ob normale HTML Tags, leere Zeilen in einer Datei oder von PHP. Ein weit verbreiteter Fehler ist mittels include(), require(), oder anderen Dateizugriffsmethoden Code zu lesen, und so unbewusst Leerzeichen oder Leerzeilen auszugeben, bevor header() aufgerufen wird. Das gleiche Problem besteht auch bei Verwendung einer einzigen PHP/HTML Datei.
    Was bei Fehlermeldungen, die man nicht kennt, sehr nützlich sein kann:

    http://www.google.de/search?hl=de&q=...nG=Suche&meta=
    Geändert von rootssw (19.06.05 um 13:17 Uhr)
     
    <?php if ($sein || !$sein) echo "Das ist hier die Frage."; ?>

Ähnliche Themen

  1. Antworten: 16
    Letzter Beitrag: 23.05.07, 15:07
  2. Antworten: 2
    Letzter Beitrag: 09.08.05, 14:01
  3. Problem mit: Header("Location: main.php");
    Von NetPerformance im Forum PHP
    Antworten: 6
    Letzter Beitrag: 10.02.05, 21:33
  4. Antworten: 14
    Letzter Beitrag: 16.09.04, 02:36
  5. Antworten: 3
    Letzter Beitrag: 18.09.03, 13:39