XML/TXT in HTML

mschoening

Gelbe Schleswiger Reinette
Registriert
21.02.07
Beiträge
1.764
Hi,
ich habe eine Frage: ich bin dabei ein Newsletter zu konzipieren (Preview) und würde gerne unterschiedliche Texte in unterschiedliche div's einlesen.

Also zum Beispiel:
Ich habe drei div's mit dem Inhalt:
1. Beispiel 1
2. Beispiel 2
3. Beispiel 3
(bzw beliebig viele - kann ich dann ja bestimmen)

Diese Texte sind dann externe .txt Dateien und werden eingelesen --> in dei eigentliche HTML Datei (können auch XML sein, dann könnte ich ja Überschrift etc getrennt positionieren).

Wie kann ich so etwas machen? Hat jemand vielleicht ein Tutorial? :eek:

Danke im Voraus
 

Nighthawk

Linsenhofener Sämling
Registriert
16.12.06
Beiträge
2.558
Müsste doch PHP reichen. Versteh ich dich richtig? Du willst einfach nur den Inhalt anderer Dateien in die Seite laden?
 

mschoening

Gelbe Schleswiger Reinette
Registriert
21.02.07
Beiträge
1.764
Genau! Ich kenne mich mit PHP leider nur sehr wenig aus...
 

mschoening

Gelbe Schleswiger Reinette
Registriert
21.02.07
Beiträge
1.764
Wie kann ich denn eine andere HTML datei in ein DIV meiner original Index.html Datei laden?
 

Hobbes_

Gast
Beachte:

Der obgenannte include() Befehl liest die Datei ein und wertet die Datei dann als PHP code direkt aus. Dieser Befehl eignet sich, um beispielsweise ein Modul mit PHP-code nachzuladen. Besser eignet sich jedoch meist require() dazu (kontrolliert, dass ein Modul nur einmal geladen wird)...

ich nehme an, dass Du direkt den in datei.txt gespeicherten text ausgeben willst. Dazu eignet sich folgender Befehl für lokale Dateien besser: readfile()

Wenn Du gar Dateien von anderen Servern ausgeben möchest, verweise ich auf folgende Seite des PHP Manuals. Dies ist jedoch nicht auf allen Servern möglich (Sicherheitsbestimmungen).

Ebenso zum Thema Sicherheit gehört, dass Du Dir über den Inhalt der Datei klar sein musst, wenn Du sie einfach so ausgibst. Du kannst nämlich locker auch beliebiebig eingeschleustes HTML, Javascript oder anderen Code so versenden mittels readfile(). Mittels include() kannst Du Dir auch beliebigen fremden PHP Code antun...

Vorsicht ist angebracht, insbesondere wenn es um Dateien geht, die vorher durch upload-Funktion auf den Server kamen. Alläfllige Probleme must Du alle selbständig escapen...

Allgemein: www.php.net ist wirklich perfekt!

Viel Erfolg!
psc

EDIT: include() funktioniert doch auch (siehe Korrektur durch Nogger)
 
Zuletzt bearbeitet von einem Moderator:

mschoening

Gelbe Schleswiger Reinette
Registriert
21.02.07
Beiträge
1.764
Bahnhof!

Hey,
danke für die Antworten. Da ich mich überhaupt nicht auskenne mit PHP! bin ich ein wenig überfordert :) Also ich poste euch mal kurz meinen Code der index.html Datei in die ich eine .txt Datei namens intro.txt einlesen möchte:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Kommentar zum Inhalt des Dokuments -->
<html>
<head>
<title>_fmail //Frecuencies Recordings Newsletter _a digital pazzo prod.</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>
<body>
<div id="header"></div>
<div>
<table>
<tr>
<td align="left"><img src="images/banner1.png"></td>
<td align="center"><img src="images/blank.png"></td>
<td align="center"><img src="images/banner2.png"></td>
<td align="center"><img src="images/blank.png"></td>
<td align="right"><img src="images/banner3.png"></td>
</table>
<div id="beatport">
<span id="download">Download our tracks at <a href="http://www.beatport.com">www.beatport.com</a></span>
<span id="info">info: <a href="mailto:[email protected]">[email protected]</span>
</div>
</div>
<div><?php include("intro.txt");?></div>
</body>
</html>

Ich sehe leider nichts von der Text Datei! Ich habe bestimmt einen grossen Fehler gemacht :) naja wäre nett wenn ihr mir weiterhelfen könntet...sonst werde ich wohl den Text jedes mal in der index.html Datei ändern müssen :eek: .
 

Hobbes_

Gast
Ich sehe leider nichts von der Text Datei! Ich habe bestimmt einen grossen Fehler gemacht :) naja wäre nett wenn ihr mir weiterhelfen könntet...sonst werde ich wohl den Text jedes mal in der index.html Datei ändern müssen :eek: .

Nein, nein: Das würde dem ganzen ja den Sinn nehmen, wenn Du es immer manuell anpassen müsstest. :)

Was hast Du als Ausgabe erhalten:
- nichts?
- den Programmcode?

---

2 mögliche Probleme:
1) PHP bezieht sich nicht eigentlich auf den Verzeichnisbaum, in dem Deine HTML-Datei drin ist. Bei allen Dateifunktionen lohnt es sich, möglichst eine absolute Adressierung auf die Datei vorzunehmen. Die Adresse von root / zu Deinem Arbeitsverzeichnis auf dem Server erfährst Du vom Admin.

Bsp:
/home/benutzerverzeichnis/xyz/datei.txt

2) Einige Web-Server interpretieren den PHP-Code in HTML-Dateien nicht. Am besten nennst Du die Datei um von index.html nach index.php

Gruss
psc
 

Nogger

Damasonrenette
Registriert
05.11.05
Beiträge
494
Beachte:

Der obgenannte include() Befehl liest die Datei ein und wertet die Datei dann als PHP code direkt aus.

Aus der von dir verlinkten Seite der Anleitung:

Beim Einbinden einer Datei wechselt der Parser vom PHP-Modus zu Beginn der Zieldatei in den HTML-Modus und kehrt am Ende der eingebunden Datei wieder in den PHP-Modus zurück. Deshalb muss jeglicher Code innerhalb der eingebundenen Datei, der als PHP-Code ausgeführt werden soll, von gültigen PHP-Start- und Ende-Tags eingefaßt sein.
 
  • Like
Reaktionen: 1 Person

Hobbes_

Gast
Aus der von dir verlinkten Seite der Anleitung:

Vielen Dank!

Dann geht include() also auch :)
Habe es einfach nie dazu verwendet...

Dann liegt das Problem nur noch an den hier angegebenen Problemen...

Nebenbei: Nebst PHP könnte auch ein SSI-Konstrukt verwendet werden: Siehe Link.
 

Nogger

Damasonrenette
Registriert
05.11.05
Beiträge
494
Wenn im Server SSI aktiviert sind, kann man auch

Code:
<!--#include virtual="intro.html" -->

benutzen.
 

mschoening

Gelbe Schleswiger Reinette
Registriert
21.02.07
Beiträge
1.764
Danke @Nighthawk und @psc! Es hat jetzt geklappt! Beziehungsweise ich habe es geschafft die erste .txt Datei einzulesen (Guckst du hier). Jetzt muss noch der ganze "content" rein.

P.S: Weiss jemand wie ich da Sonderzeichen hinbekomme? Tilde, etc.
 

Hobbes_

Gast

Damit wird es nun definitiv mit include() nicht mehr klappen. Deshalb benutze ich diese Funktion nie in diesem Kontext (und deshalb war mir die obgenannte Anwendung nicht mehr so geläufig), da ich meist auch immer wenigstens Teile des Textes dynamisch durch andere ersetzen lasse (zB. Parameter) bevor ich sie ausgebe...

htmlentities() benötigt einen String als Parameter, den Du von include() und auch readfile() nicht erhälst.

Dafür empfehle ich Dir nochmals die Seite, die ich Dir bereits angegeben hatte, die man auch zum Site-übergreifenden Lesen von Dateien benutzen kann (insofern Sicherheitseinstellungen das erlauben). Ähnliche Konzepte kannst Du auch verwenden, um direkt Dateien des eigenen Servers in einen String einzulesen, die Du dann direkt bearbeiten kannst, bevor Du sie an den Web-Browser sendest. Nun wird es auch erst richtig PHP-mässig interessant :) Nur für ein simples include genügen auch SSI. ;)

Es lohnt sich, sich etwas mit den Angaben auf php.net bezüglich Dateien / Filesystem auseinanderzusetzen. Die Dokumentation ist wirklich sehr umfangreich und enthält zahlreiche Beispiele. Dennoch lohnt sich die investierte Zeit und nicht nur das copy & paste einer fertigen Komplettlösung. Ich finde immer, dass man den Code verstehen sollte, den man in seinem Programm verwendet...

Gerade in diesem Bereich lohnt es sich gut zu verstehen, was man macht (Sicherheit ist ein ewiges topic von mir, ich weiss :) )

Viel Erfolg!
psc
 
Zuletzt bearbeitet von einem Moderator: