Siebenstein: Wieso wird die txt Datei nicht geöffnet?

Beitrag lesen

auf meiner Seite soll es auch Links geben die txt-Dateien öffnen

	$.ajax({
	type: "POST",
	url: "Open.php",
	data: { Datei: encodeURIComponent(Link.getAttribute("Datei")) },
	success: function() {}
	});
$Datei = urldecode($_REQUEST['Datei']);

system($Datei);

Wenn du dir mal die Beschreibung von system() anschaust, wirst du feststellen, dass du damit keine Textdateien öffnest, sondern Befehle ausführst.

Doch wieso oftmals nicht, zb. mit Umlauten oder mit Abständen?

Umlaute sind eh immer eine Sache für sich, bis vor nicht allzu langer Zeit waren die entweder gar nicht vorgesehen (ASCII-Zeichensatz) oder deren Definition überlappte sich mit jener anderer Zeichen (allen voran die 15 ISO-Zeichensätze).

Dieses Grundproblem fällt nicht auf, solange mit den Umlauten nur systemintern hantiert wird, also mindestens auf demselben Rechner, meist auch noch auf gleichen Betriebssystemversionen mit gleicher Ländereinstellung. Sobald sie aber dieses geschlossene System verlassen, muss irgendwie die Kodierung mitgeschleppt werden – und speziell bei URLs ist dafür keine Möglichkeit vorgesehen. Der Umlaut bzw. das Sonderzeichen wird vom Sendenden in eine Zahl umgewandelt und der Empfänger kann nur raten, was es mit dieser Zahl auf sich haben könnte.

Insofern: Finger weg von Sonderzeichen in URLs.

Die "Abstände" (ich vermute, du meinst Leerzeichen) sind sehr wahrscheinlich ein anderes Problem: Wie oben schon geschrieben, führst du mit system() eine Befehlszeile aus. system("dir c:") öffnet nicht die Datei namens "dir c:", sondern führt den Befehl dir aus, der dann den Inhalt des Verzeichnisses c:\ anzeigt.

Verwende readfile(), um eine Textdatei auszugeben.