Antworten auf deine Fragen:
Neues Thema erstellen

Am verzweifeln: Warning: Cannot modify header information...

Hallo Leute,ich habe jetzt Google und psd-tutorials wirklich durchgewüstet um nach der Lösung zu finden.Sitze seit Stunden schon und finde wirklich das Problem nicht.Es geht um folgendes: Bevor man die galerie.php besucht wird nach passwort Eingabe gefragt: wenn das Passwort stimmt wird man zu galerie.php weitergeleitet.Ansonsten bleibt man bei auth.php um das Passwort einzugeben und der Inhalt von galerie.php wird nicht angezeigt.So sieht mein auth.php aus:
PHP:
          ACHTUNG! Passwortgeschützter Bereich!      Bitte geben Sie das Passwort ein:             Das eingegebene Passwort ist falsch!                         Weiter                    * Das Passwort wird jährlich geändert.    * Das Passwort erhalten Sie NUR BEI UNS in der Kindergruppe.
Und meine galerie.php sieht so aus:
PHP:
Hier stehen nur img und a Html-Tags(Lightbox Bilder)
Ich hab versucht am Mac mit textedit den Leerzeichen ganz am Ende zu löschen und zu speichern da ich überall gelesen habe das es möglicherweise etwas mit einem Leerzeichen zu tun hätte. Leider ohne Erfolg.Das komische aber ist das es vorher funktioniert hat.. Ich hab ein paar Links im header in der mobilen Navigation eingefügt danach bekam ich diese Fehlermeldung.Kann man bitte mir helfen.Liebe Grüße
 
Zuletzt bearbeitet:

El Gordo

Noch nicht viel geschrieben

Nimm einfach mal einen anderen Editor der die Dateien als UTF8 ohne BOM speichern kann. Leider habe ich keinen MAC und kann dir daher nicht sagen was es da wohl so alles gibt. Google sagt Text Wrangler oder Text Mate zum Beispiel.
 

Fugel

rebmeM

PSD Beta Team
Der Fehler kommt weil du ein "echo" ausgibst bevor du den Header ändern willst, das geht nicht. Du musst immer erst den Header bearbeiten und dann die Ausgabe machen.

Als Editor zum programmieren kann ich die Netbeans empfehlen, den verwende ich jetzt schon jahre lang und der ist wirklich super. Wenns einfacher sein soll geht auch Athom.
 
Der Fehler kommt weil du ein "echo" ausgibst bevor du den Header ändern willst, das geht nicht. Du musst immer erst den Header bearbeiten und dann die Ausgabe machen.

Als Editor zum programmieren kann ich die Netbeans empfehlen, den verwende ich jetzt schon jahre lang und der ist wirklich super. Wenns einfacher sein soll geht auch Athom.

Meinst du den in der auth.php "echo "jetzt da"; "

Auch das hatte ich schon gelöscht .. Es ändert sich nichts an der Fehlermeldung.
 

Fugel

rebmeM

PSD Beta Team
Wie genau setzen sich die Datein zusammen? Kannst du nochmal den aktuellen Stand posten und schreiben welche Datei was wann wo läd?!

PS: Vorallem die galerie.php würde mich mal interessieren.
 
Eigentlich hat sichs am oberen Code nichts geändert - ich probier und wenns nicht funktioniert lösche ich es und stelle es auf den alten "nicht" funktionierden Stand zurück (mit diesem Code hat es ja vorher schon funktioniert - komisch das es jetzt nicht mehr funktioniert).Also die galerie.php soll mit Passwort geschützt werden.Bevor man die galerie.php aufruft wird man mittels auth.php nach Passwort gefragt. Wenn das Passwort stimmt wird man mit header-location an galerie.php weitergeleitet und die session gespeichert.Wird das Passwort falsch eingegeben bleibt man auf auth.php - damit man bei falsch eingabe auf auth.php weitergeleitet wird bzw auf auth.php bleibt ist der coden dann bei galerie.php ganz unten nach dem content mit folgendem code eingebaut: Aktueller Stand auth.php:
PHP:
          ACHTUNG! Passwortgeschützter Bereich!      Bitte geben Sie das Passwort ein:             Das eingegebene Passwort ist falsch!                         Weiter                    * Das Passwort wird jährlich geändert.    * Das Passwort erhalten Sie NUR BEI UNS in der Kindergruppe.
Aktueller Stand galerie.php (inkl alle Dateien - bitte nicht auf die Einrückungen achten .. werde diese noch anpassen):
PHP:
 
Zuletzt bearbeitet:

Fugel

rebmeM

PSD Beta Team
ganz unten nach dem content mit folgendem code eingebaut:
Und genau das funktioniert nicht. Eine Header Anweisung muss immer vor alles ausgaben stehen, egal ob mit echo ausgegeben oder einfach HTML vor dem Header, das funktioniert nicht. Geh nochmal alle datein durch und schau das deine Weiterleitungen und co. immer ganz oben stehen. Du musst auch darauf achten, dass du kein include mit einer Datei machst in der wieder eine Ausgabe geschieht.

Also nochmal ran, wenns dann immer noch nicht klappt einfach nochmal melden ;-)
 
Mir fällt leider nichts anderes ein wie ich es noch eingeben könnte.

Da in der galerie.php die Session abgefragt wird.. wenn die Session quasi "allow" steht ... wird der Inhalt angezeigt .. ansonsten wird else nach dem Inhalt ausgegeben und header location eingebaut
 

Fugel

rebmeM

PSD Beta Team
Ich würde dir einen etwas anderen Ansatz vorschlagen. Behandle den ganzen Loginkram bevor du überhaupt eine Seite anzeigst:

Session abfragen
-> Zur Login Seite bei FALSE
-> Zum Content falls TRUE

Somit gehst du diesem ganzen Problemen aus dem Weg und es ist meiner Meinung nach "Sauberer".

Du kannst mit dieser Möglichkeit alles erledigen ohne nur ein Zeichen auszugeben.
 
Meinst du eher sowas - wobei das genauso nicht funktioniert :
PHP:
Bin grad so verzweifelt .. kein Kopf mehr alles druchgebrannt seit gestern nacht bin noch nicht der Meister in php - könntest du mir eventuell deine art des codes aufschreiben der auch funktioniert?
 
Zuletzt bearbeitet:

Fugel

rebmeM

PSD Beta Team
Ich versuch dir mal zu helfen, bin nur nicht so der gute Lehrer xD

hier mal eine grafische Anleitung wie ich den Ablauf gestalten würde:
https://picload.org/view/rpcpodwr/anleitung.jpg.html

Dann Versuch ich mal einen stark vereinfachten Code hier rein zu basteln, der funktioniert so natürlich nicht und muss angepasst werden, vorallem was die Sicherheit angeht, aber darum gehts erstmal nicht.

check-login.php
PHP:
<?php
if(empty($_SESSION['login'])){
header('Location:login-form.php');
}
?>

galerie.php
PHP:
<?php
include('check-login.php');
?>
<html>
<body...
 

dkarvounaris

Lead Web Developer

PSD Beta Team
Im Grunde ist es ganz einfach:
Wenn irgendeine Ausgabe, egal was, auch nur ein Byte erfolgt, so werden die Header gesendet. Passiert dies, kann man sie nicht mehr mit header() modifizieren.

Du musst also nach allem suchen, was eine vorige Ausgabe schon verursacht, bevor du "header()" aufrufst.

Ursachen können sein:
  • Leerzeichen oder andere Zeichen (auch unsichtbare) am Anfang der Datei vor dem "<?php".
  • Ein UTF-8 BOM Header in der Datei. Erstelle eine Datei mit einem normalen Editor und kopiere deinen Code neu rein. Am besten du nutzt als PHP-Entwickler einen Editor, der dir Codierung, Zeichensatz sowie Zeilenumbruchformat der Datei immer anzeigt, dann kannst du leicht sichergehen, dies ist immer richtig, z.B. PHPStorm.
  • Irgendein echo, print_r, sprintf, var_dump oder ähnlicher Aufruf irgendwann vor dem header() Befehl.
  • Ein Fehler, der eine Ausgabe einer Fehlermeldung frühzeitig verursacht. Du musst dir einfach mal den Source-Code im Browser anschauen (nicht im Inspector, sondern richtig den Source Code), was da alles vorkommt vor der Fehlermeldung bzgl. der Header.
  • Leerzeichen oder Zeilenumbrüche nach einem ?> können auch eine Ausgabe verursachen, deswegen lässt man es bei reinen Dateien die nur PHP-Code enthalten am Ende in der Regel weg. Das geht.
Eventuell sagt dir die Fehlermeldung sowas wie "output started at..." und weist dich auf die Zeile hin, die das Problem verursacht (bin mir gerade nicht sicher, ob dies nur mit der xDebug Erweiterung ausgegeben wird).

Du kannst beeinflussen, wann PHP die Header versendet werden, indem du ob_start(); aufrufst, damit sogenanntes Output Buffering nutzt. Damit wird jede Ausgabe unterbunden und in einem Buffer vorgehalten, bis entweder das Script endet oder du explizit ein Flush des Output Buffers machst. Schaue dir die PHP Dokumentation für weitere Details an.
 

Curanai

Aktives Mitglied

Da hast jetzt den Strichpunkt vergessen. Ich kenne solche "Fehler" leider nur allzu gut

Was zum Teufel ist "Strichpunkt"? Hey, dann hab ich ein Synonym für "Semikolon"!!!

Und für meinen Geschmack ist der header() eh falsch: Es kommt kein "=" vor dem "?". Die Datei-Endung wäre dann ".php=" - geht so eine Datei durch den Parser?

... und ich muss noch meckern bzgl. des headers() oben. In dem Beispiel mit fünf Zeilen mag das gehen, alles andere MUSS immer ein exit()/die() auf der nächsten Zeile haben, damit folgender Code auch nicht mehr ausgeführt wird. Es wäre mir entgangen, wenn PHP das jetzt selbständig stoppt.

Ferner liest sich das oben wie "ich hab if/else-Anzeige wegen Session und dann eine Weiterleitung". Sollte dem so sein, bitte den Source prüfen, ob das logisch ist (denn es klingt nicht so).

Viel Erfolg.
 

Chris_EDI

PixelNik

Was zum Teufel ist "Strichpunkt"?
lt. Wikipedia:
Der Strichpunkt (Süddeutschland inkl. Saarland und in Teilen von Rheinland-Pfalz, Österreich, Südtirol, Schweiz, Liechtenstein, Belgien, Luxemburg oder das Semikolon
Ich komme aus Österreich und bin zudem kein Programmierer. ;)

... und ich muss noch meckern bzgl. des headers()
Da hast recht, inzwischen ist der Code komplett überarbeitet und scheint zu funktionieren.
 

Curanai

Aktives Mitglied

Hi hi ... joooo ... "Strichpunkt" ... das ist für mich – mit gefühlt 60 km Distanz an die Küste – ja mal total aus der Realität gezerrt. :D Aber es ist immer wieder schön Humanoide jenseits des Weißwurst-Äquators zu treffen. Grüße daher nach AUT. ;)

EDIT: Warnung vor dem Humor! Ich konnte mir das jetzt nicht wirklich selbst verkneifen und hab hier den Konter auf Deinen Wiki-Hinweis. :D :D :D
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Statistik des Forums

Themen
118.611
Beiträge
1.538.342
Mitglieder
67.524
Neuestes Mitglied
BSKGA
Oben