Include richtig anwenden

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
x16
Mitglied
Beiträge: 472
Registriert: 03.11.2005 22:35
Wohnort: Hamburg
Kontaktdaten:

Beitrag von x16 »

Ich möchte die recent.php, die im Root meines Forums liegt in meine index.html meines Hauptroots includen. Ich habe dies schon so gemacht:

Code: Alles auswählen

<?php include ('http://www.test.de/forum/recent.php'); ?>
In der gleichen Datei habe ich noch eine 2. datei includet:

Code: Alles auswählen

<?php include ('http://www.test.de/news.html'); ?>
Aber ich habe verdammt lange Ladezeiten seitdem. Diese beiden includes befinden sich in jeder Datei meiner Seite, also in verschiedenen Verzeichnissen, also blieb mir nichts anderes übrig als die absolute Adressierung zu wählen (http://www.test.de). Aber soll man ja nicht, also muss ne andere Lösung her.

Was haltet ihr von:

Code: Alles auswählen

<?php include($_SERVER['DOCUMENT_ROOT'].'news.html'); ?>
Soll aber irgendwelche Nachteile haben!
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Kannst du denn nicht den Pfad "rückwärts" durch die Verzeichnisse laufen?

Z.B. so:

Code: Alles auswählen

$path = '../../ordner/datei.php';
Das sollte einen Pfad zu einer Datei liefern, die im Unterordner des übergeordneten Ordner des übergeordneten Ordners liegt, also quasi 1 Etage höher in einem anderen Ordner.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
Olli Oberhausen
Mitglied
Beiträge: 561
Registriert: 22.10.2004 01:03
Wohnort: Oberhausen NRW
Kontaktdaten:

Beitrag von Olli Oberhausen »

x16 hat geschrieben: Aber wenn ich das so eingebe,:

Code: Alles auswählen

<?php include('forum/recent.php'); ?>
bekomme ich diese fehlermeldung:

Code: Alles auswählen

Warning: main(./extension.inc): failed to open stream: No such file or directory in /www/htdocs/v157017/forum/recent.php on line 13
Martin Truckenbrodt hat geschrieben: In der recent.php müßte folgendes drin stehen:

Code: Alles auswählen

$phpbb_root_path = './forum/';
Gruß Martin
Klingt komisch, ist aber richtig :grin:

Die fehlermeldung kommt logischerweise da die recent.php die extension.inc aufruft.
Die wird allerdings mit $phpbb_root_path inkludiert und dieser ist "./".

Da jetzt aber die recent in die index inkludiert wird, ist './' dein Document root.


x16 hat geschrieben: der Code wird ausgeführt, gibt aber dennoch eine fehlermeldung. Ich poste später mal welche genau!
Mach das mal... Das ist auf jeden fall der richtige weg.

Olli
Neulich im Zoo: Papa, guck mal, da sind Linuxe...
KB-Suche :: db_update_generator :: phpMyAdmin
Winmerge :: Zend Studio
Benutzeravatar
x16
Mitglied
Beiträge: 472
Registriert: 03.11.2005 22:35
Wohnort: Hamburg
Kontaktdaten:

Beitrag von x16 »

So wenn ich den Pfad in der recent.php von ./ auf ./forum/ ändere funktioniert es zwar, aber es kommt trotzdemnoch diese Fehlermeldung:

Code: Alles auswählen

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/v157017/index.html:7) in /www/htdocs/v157017/forum/includes/sessions.php on line 283

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/v157017/index.html:7) in /www/htdocs/v157017/forum/includes/sessions.php on line 284
Benutzeravatar
Martin Truckenbrodt
Mitglied
Beiträge: 1143
Registriert: 15.08.2003 23:16
Wohnort: Südthüringen
Kontaktdaten:

Beitrag von Martin Truckenbrodt »

Hallo
das sieht schon gut viel besser aus.

Hast Du in der recent.php folgende Passage drinnen?

Code: Alles auswählen

<head>
..
</head>
Wenn ja, lösche sie einfach raus.

Oder rufst Du in der recent.php die page_header.php auf?
Wenn ja, liegt hier Dein Problem.

Suche mal nach der Meldung hier im Forum.

Gruß Martin
Advanced Block MOD 1.1.4 ist released! - Verhindere Spam auf Deinem phpBB3 Board mit Stop Forum Spam, BotScout, Akismet, Project Honey Pot und verschiedenen IP-RBL und Domain-RBL DNS Blacklisten! - Meine MODs - phpBB Complete Core
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Diese Fehlermeldung bedeutet, dass versucht wurde Header an den Browser zu senden (z.B. Cookies, Redirect o.ä.), dieses aber nicht möglich war weil schon irgend ein Text vorher ausgegeben wurde. Sollte das Skript, in dem du die recent.php einbindest bereits vor dem Aufruf Text ausgegeben haben wird das das Problem sein. Es reicht aber auch schon ein Leerzeichen oder eine andere Fehlermeldung für diesen Fehler.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
x16
Mitglied
Beiträge: 472
Registriert: 03.11.2005 22:35
Wohnort: Hamburg
Kontaktdaten:

Beitrag von x16 »

Naja ich binde die recent.php ja in meine index.html ein! Das ist ne stinknormale html datei mit allem was dazu gehört:

Code: Alles auswählen

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
.
.
.
</head>
<body>
.
.
.
<td ...>
<?php include($_SERVER['DOCUMENT_ROOT'].'news.html'); ?>
</td>
<tr>
<td ...>...</td>
</tr>
<tr>
<td ...>...</td>
</tr>
<tr>
<td ...>
<?php include('forum/recent.php'); ?>
</tr>
</body>
</html>
Und hier die recent.php.
Benutzeravatar
Olli Oberhausen
Mitglied
Beiträge: 561
Registriert: 22.10.2004 01:03
Wohnort: Oberhausen NRW
Kontaktdaten:

Beitrag von Olli Oberhausen »

Dann schreib mal <?php ob_start(); ?> in die erste zeile in der index.html

Das sollte die fehlermeldung unterdrücken, da vorerst kein header oder content an den browser gesendet wird.

Olli
Neulich im Zoo: Papa, guck mal, da sind Linuxe...
KB-Suche :: db_update_generator :: phpMyAdmin
Winmerge :: Zend Studio
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Womit das Problem klar wäre, du gibst vor dem Include Text aus. Deswegen ist es meist einfacher andere Daten in das Forum zu integrieren als das Forum in die anderen Dinge. Vielleicht kannst du dir eine Kopie der Recent.php anlegen die dann so modifizieren, dass sie diesen HTML Text mit ausgibt (die Änderung wird wohl nur am Template nötig sein, da könntest du den Code einfügen).
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
x16
Mitglied
Beiträge: 472
Registriert: 03.11.2005 22:35
Wohnort: Hamburg
Kontaktdaten:

Beitrag von x16 »

Super so klappt es!!! Vielen Dank Jungs.

Aber noch ein paar Fragen:

1) Wenn ich "<?php ob_start(); ?>" an die Spitze meine html Datei setzte, gibt das nicht Probleme mit dem Doctyp??? Denn der IE ignoriert den Doctype wenn er nicht ganz oben steht, oder nicht?

2) Ich habe ja noch das Problem, das diese datei von jedem Order aus included wird. Habs dank Google so gelöst:

Code: Alles auswählen

<?php include($_SERVER['DOCUMENT_ROOT'].'news.html'); ?>
.
.
.
<?php include($_SERVER['DOCUMENT_ROOT'].'forum/recent.php'); ?>
Genau so die recent.php:

Code: Alles auswählen

$phpbb_root_path = $_SERVER['DOCUMENT_ROOT'].'forum/';
Ist das ok (Sicherheit?) oder gibt es besserer Lösungen?
Antworten

Zurück zu „Coding & Technik“