2016-08-20 3 views
0

Ich habe eine Hauptseite, die einige Authentifizierung verarbeitet und dann, wenn fertig mit der Header-Redirect umgeleitet. Alles funktionierte gut, bis ich kürzlich einen der Includes aktualisierte, um eine Variable zu tragen. siehe unten.enthalten Datei sendende Header verhindern Umleitung

Ich hatte keine Probleme, bis ich $ schoolName der Zeichenfolge hinzugefügt. Ich brauchte das für unser automatisiertes Replikationssystem (lässt Benutzer die Seite und die Datenbank mit einem anderen Schulnamen für verschiedene Kunden kopieren)

Hier ist die enthaltene Datei. ziemlich einfach.

Ich verstehe nicht, wie Header bereits gesendet werden, außer $ schoolName gibt tatsächlich unsichtbare, nicht serverseitige Daten aus. Hat jemand irgendwelche Vorschläge oder Ideen, wie das zu beheben ist? Oder gibt es eine bessere Möglichkeit, Seiten dynamisch zu kopieren und zu bearbeiten?

+1

Sie wollen das wirklich gar nicht erst machen. Nicht, wenn Sie * die * $ schoolName-Variable nicht sorgfältig prüfen, bevor Sie sie zum Einschließen einer Datei verwenden. Wenn Sie es so machen, sind Sie anfällig für etwas, das als * Dateieinschlussattacken * bekannt ist. Wenn der Benutzer die Variable ändert, kann er den Server zwingen, Dateien einzuschließen, die er nicht verwenden soll. Wie vielleicht PHP-Dateien auf Ihren Server woanders hochgeladen. – icecub

+0

Nun, was ist eine bessere Möglichkeit, um Websites im laufenden Betrieb zu duplizieren? sollte es nur ein manueller Prozess sein? –

+2

Ich war gerade dabei, Ihre Frage zu bearbeiten, um den Einzug im Codeblock zu beheben, aber wenn das in Ihrem tatsächlichen Code ist, könnte das das Problem sein. Haben Sie tatsächlich Leerzeichen vor '

Antwort

1

Überprüfen Sie, ob Sie eine Datei mit dem Namen "../../includes/databaseconnections/fakeschoolname/database_connection.php" haben. PHP-Warnungen können die Probleme verursachen, wenn die Datei nicht existiert

+0

I do - Das Include funktioniert auf anderen Seiten, die auf die Datei zugreifen und nicht umleiten. Es scheint speziell mit der enthaltenen Datei zu sein, oder der Tatsache, dass es eine Variable gibt. Ich kann die Variable hart kodieren und die eingeschlossene Datei globalvariables Datei entfernen und es funktioniert. –

+0

Ich weiß nicht, welches System Sie ausführen, aber Sie können $ {schoolName} versuchen und den Pfad mit "./" starten – peter

0

Ich habe das Problem herausgefunden, und es hat mich fast verrückt gemacht. Das Problem wurde durch zwei leere Zeilen NACH dem Schließen meines PHP-Tags in der Datei globalVariable.php verursacht.

Es sollte wie in meiner Frage gezeigt worden sein, aber ich bemerkte in meiner IDE hatte ich zwei zusätzliche Leerzeichen nach.

<?php 
$schoolName = "fakeschoolname"; 
?> 
BLANKLINE 
BLANKLINE 

fand ich einen anderen Posten How to fix "Headers already sent" error in PHP, die das PHP nur erklärt wird eine Zeile von Leerzeichen löschen. Weil ich die Datei einfügte und vor der Header-Weiterleitung zwei Leerzeichen hatte. Das war es, was dazu führte, dass es scheiterte.