• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

PHP: Datei includen aber nicht ausgeben

jackflash

Mitglied
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:
<h1>Guten Morgen!</h1>
<p>Dies ist ein Test</p>
<?php $tag="Freitag";?>


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

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


Danke!
 
Werbung:
Das dürfte nur per Output-Buffer gehen.

PHP:
<?php

ob_start();
include './Datei1.php';
ob_end_clean();
echo $tag;
 
Werbung:
Oder man trickst...

PHP:
<?PHP
if($_SESSION['blabla'] == "on")
{
  ?>
  <h1>Guten Morgen!</h1>
  <p>Dies ist ein Test</p>
<?php 
 $tag="Freitag";
}
Setzt man $_SESSION wird ausgegeben, sonst nicht
 
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.
 
Werbung:
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) : ?>
    <h1>Guten Morgen!</h1>
    <p>Dies ist ein Test</p>
<?php endif; ?>

<?php $tag="Freitag";?>

index.php

PHP:
<?php

$allowOutput = false;

include './Datei1.php';

echo $tag;

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. ;)

* * *​

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

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.​

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();

?><!DOCTYPE html>

<html lang="de">

<head>
    <meta charset="utf-8" />
    <title><?php echo $title; ?></title>
</head>

<body>
    <ul>
        <li><a href="./?page=home">Home</a></li>
        <li><a href="./?page=about">About</a></li>
        <li><a href="./?page=contact">contact</a></li>
    </ul>

    <?php echo $content; ?>

</body>

</html>

pages/home.php

PHP:
<?php $title = 'Startseite'; ?>

<h1>Willkommen auf meiner Seite!</h1>

$title in pages/home.php würde den Standardtitel der Seite überschreiben.
 
Zuletzt bearbeitet:
:mrgreen: Das kommt dabei raus, wenn man genau liest ..... und zwar nur die eigenen Posts :shock:
 
Zurück
Oben