Datei includen und Inhalt als Variable verwenden
Ron
- php
Hallo,
irgenwie habe ich Probleme damit.
Obwohl ich dachte, das wäre ne einfache Geschichte...
Ich habe eine Datei in der steht nur ein Wort. On oder Off.
Abhängig von diesem Wort möchte ich eine If-Abfrage starten.
Der Code:
<?php
$y = "http://www.domain.de/datei.php";
$anoderaus = include($y);
if ($anoderaus == "On") { ... }
else { ... }
?>
Anstatt das der Dateiinhalt in die Variable gepackt wird, wird dieser ausgegeben und die Variable ist 1. Die 1 steht wohl dafür das der include geklappt hat.
Aber wie macht man das dann?
Irgendwie scheine ich auf dem Schlauch zu stehn.
Gruß Ron
Hi,
Anstatt das der Dateiinhalt in die Variable gepackt wird, wird dieser ausgegeben und die Variable ist 1. Die 1 steht wohl dafür das der include geklappt hat.
Aber wie macht man das dann?
file_get_contents duerfte in diesem Falle das einfachste sein.
Wenn include ueber HTTP freigeschaltet ist, sollte es mit dieser Funktion ebenso funktionieren.
MfG ChrisB
echo $begrüßung;
Wenn include ueber HTTP freigeschaltet ist, sollte es mit dieser Funktion ebenso funktionieren.
Nein, denn
Ich habe eine Datei in der steht nur ein Wort. On oder Off.
$y = "http://www.domain.de/datei.php";
$anoderaus = include($y);
include liefert nur dann etwas zurück, wenn es in der inkludierten PHP-Daten als return zurückgeliefert wird. Dazu muss der PHP-Code von dem Server, der das include ausführt, interpretiert werden. Wenn in der inkludierten Ressource Text außerhalb von <?php ?> steht, dann landet der ungesehen durchgereicht in der Ausgabe, nicht jedoch im Rückgabewert und demzufolge auch nicht in $anoderaus. Das Einbinden externer Ressourcen über Code-ausführende Methoden wie include ist auch schon aus Sicherheitsgründen nicht zu empfehlen. Auch dann nicht, wenn man den den zu inkludierenden Text ausliefernden Server unter seiner Kontrolle wähnt.
echo "$verabschiedung $name";
Hi,
Wenn include ueber HTTP freigeschaltet ist, sollte es mit dieser Funktion ebenso funktionieren.
Nein
Damit bezog ich mich auf file_get_contents - das unterliegt ja den gleichen Restriktionen wie include, was Zugriffe ueber HTTP angeht.
(allow_url_fopen vs. allow_url_include muesste man in aktuellen PHP-Versionen noch beruecksichtigen.)
include liefert nur dann etwas zurück, wenn es in der inkludierten PHP-Daten als return zurückgeliefert wird.
Selbst das wird ueber HTTP m.W. nicht funktionieren.
Das Einbinden externer Ressourcen über Code-ausführende Methoden wie include ist auch schon aus Sicherheitsgründen nicht zu empfehlen.
Zustimmung.
MfG ChrisB
echo $begrüßung;
Wenn include ueber HTTP freigeschaltet ist, sollte es mit dieser Funktion ebenso funktionieren.
Nein
Damit bezog ich mich auf file_get_contents - das unterliegt ja den gleichen Restriktionen wie include, was Zugriffe ueber HTTP angeht.
(allow_url_fopen vs. allow_url_include muesste man in aktuellen PHP-Versionen noch beruecksichtigen.)
Der Teil in Klammern ist das hüpfende Komma. Deine Aussage las sich so, als ob du allow_url_include meintest. Generell wäre es eindeutiger mit dieser Formulierung gewesen: Wenn das Dateiöffnen über HTTP ...
Für das Zurückliefern ist letztlich ein interpretiertes return entscheidend. Dass eine Interpretation durch bestimmte Konfigurationen ausgeschlossen werden kann, ist nur eine weitere Voraussetzung.
include liefert nur dann etwas zurück, wenn es in der inkludierten PHP-Daten als return zurückgeliefert wird.
Selbst das wird ueber HTTP m.W. nicht funktionieren.
Für den Rückgabewert von include ist es egal, ob das Argument von include auf eine lokale Datei oder ferne Ressource verweist. Es ist nur das von Bedeutung, was include zu lesen bekommt. Bekommt es PHP-Code mit einem return drin, dann kann es diesen Wert zurückgeben, ansonsten nicht. Wenn der PHP-Code schon am anderen Server ausgeführt wurde, und die Ausgabe nicht wie PHP-Code inklusive <?php ?> aussieht, dann hat include nichts zu interpretieren und reicht nur durch.
echo "$verabschiedung $name";
Hi,
Der Teil in Klammern ist das hüpfende Komma. Deine Aussage las sich so, als ob du allow_url_include meintest. Generell wäre es eindeutiger mit dieser Formulierung gewesen: Wenn das Dateiöffnen über HTTP ...
Ja, da war ich zu ungenau. Wollte nur nicht mit zu viel Details Verwirrung stiften - wenn includes uber HTTP schon erlaubt sind, dann wird man wohl i.d.R. davon ausgehen duerfen, dass auch das allgemeine Einlesen von Ressourcen ueber HTTP erlaubt sein duerfte.
Für den Rückgabewert von include ist es egal, ob das Argument von include auf eine lokale Datei oder ferne Ressource verweist. Es ist nur das von Bedeutung, was include zu lesen bekommt. Bekommt es PHP-Code mit einem return drin, dann kann es diesen Wert zurückgeben, ansonsten nicht. Wenn der PHP-Code schon am anderen Server ausgeführt wurde, und die Ausgabe nicht wie PHP-Code inklusive <?php ?> aussieht, dann hat include nichts zu interpretieren und reicht nur durch.
Auch das wollte ich eigentlich ausgedrueckt haben.
MfG ChrisB
Hello,
wenn Du die Datei includen willst, muss es eine gültige PHP-Datei sein.
<?php
$y='yes';
?>
würde also den gewünschten Erfolg liefern.
Oder, wie ChrisB Dir schon vorgeschlagen hat:
$y = file_get_contents('dateiname');
Oder aber, Du nimmst die Funktion parse_ini_file()
http://de.php.net/manual/de/function.parse-ini-file.php,
die mMn für Initialisierungsdateien die beste Lösung darstellt.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
Hi,
wenn Du die Datei includen willst, muss es eine gültige PHP-Datei sein.
<?php
$y='yes';
?>würde also den gewünschten Erfolg liefern.
Nein, nicht bei der Einbindung ueber HTTP - da wuerde man, sofern der die Ressource ausliefernde Webserver das Ganze als PHP parst, nur die Ausgabe des Scriptes bekommen; bei deinem Beispiel also nichts.
MfG ChrisB
Hello,
Nein, nicht bei der Einbindung ueber HTTP - da wuerde man, sofern der die Ressource ausliefernde Webserver das Ganze als PHP parst, nur die Ausgabe des Scriptes bekommen; bei deinem Beispiel also nichts.
Entschuldige, das hatte ich nicht im Zusammenhang betrachtet.
Ich hatte angenommen, die Datei solle aus dem lokalen Dateisystem stammen und hatte mich schon gewundert, wieso Du da ohne Warnung die fopen-Wrapper für http ins Spiel brachtest.
Per http:// würde ich sowieso keinerlei Includes zulassen! Das iist ein soooooooooo großes Loch im Sicherheitskonzept, dass man es kaum wieder gestopft bekommt. Da könnte einem ja alles untergejubelt werden.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
Hallo Tom vom Berg,
danke für deine Antwort..
Oder aber, Du nimmst die Funktion parse_ini_file()
http://de.php.net/manual/de/function.parse-ini-file.php,
das hat mir geholfen.
Gruß Ron