PHP: Datei includen aber nicht ausgeben

Hallo,

ich möchte mittels PHP eine Varible aus einer Datei (Datei1.php) auslesen.

Wichtig ist, dass die Datei NICHT ausgegeben werden soll (womit include meiner Meinung nach nicht in Frage kommt).

Datei1.php

[CODE]

Guten Morgen!

Dies ist ein Test

<?php $tag="Freitag";?>[/CODE]

Code.php

<?php include(Datei1.php); echo $tag;

Dieser Code funktioniert leider nicht, da hierbei die komplette Datei1.php ausgegeben wird und nicht nur $tag.

Danke!

Das dürfte nur per Output-Buffer gehen.

[php]<?php

ob_start();
include ‚./Datei1.php‘;
ob_end_clean();
echo $tag;[/php]

Vielen Dank!

Oder man trickst…

[PHP]

<?PHP if($_SESSION['blabla'] == "on") { ?>

Guten Morgen!

Dies ist ein Test

<?php $tag="Freitag"; }

[/PHP]Setzt man $_SESSION wird ausgegeben, sonst nicht

Da täte es auch eine Variable/Konstante, die du vor der include-Zeile setzt und im Include abfragst.

Natürlich, aber es geht doch nur um die Ausgabe denke ich, alles Andere aus Datei1.php soll wohl abgearbeitet werden, oder habe ich was falsch verstanden.

Ich meinte nur, dass da keine Session nötig ist, sondern jede Variable herhalten kann.

Das war einfach eine winzige Anmerkung.

Datei1.php

[php]<?php if ($allowOutput) : ?>

Guten Morgen!


Dies ist ein Test

<?php endif; ?> <?php $tag="Freitag";?>[/php]

index.php

[php]<?php

$allowOutput = false;

include ‚./Datei1.php‘;

echo $tag;[/php]

Der Inhalt der inkludierten Datei wird stumpf an der entsprechenden Stelle in das inkludierende Script eingefügt.

Schreibe das nur der Vollständigkeit halber. Ich kann mir denken, dass sowas bekannt ist. :wink:

[center]* * *[/center]

Die Sache mit dem Output-Buffer ist übrigens ganz schick in einem simplen FrontController-Layout.

[indent]Edit: Achtung: Für den GET-Parameter „page“ könnten relative Pfade angegeben werden und so auch Dateien außerhalb des festgelegten Unterverzeichnisses eingebunden werden. Sowas sollte in der fertigen Anwendung per Whitelist oder ähnlichem unterbunden werden.[/indent]

index.php

[php]<?php

$page = (isset($_GET[‚page‘]))
? trim((string) $_GET[‚page‘])
: ‚home‘;

$title = ‚Meine Seite‘;

ob_start();
include ‚./pages/‘ . $page . ‚.php‘;
$content = ob_get_clean();

?>

<?php echo $title; ?>
<?php echo $content; ?>
[/php]

pages/home.php

[php]<?php $title = 'Startseite'; ?>

Willkommen auf meiner Seite!

[/php]

$title in pages/home.php würde den Standardtitel der Seite überschreiben.

:mrgreen: Das kommt dabei raus, wenn man genau liest … und zwar nur die eigenen Posts :shock: