Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Variable aus anderer Datei übernehmen





Frage

Hallo, habe folgende Dateien: [code] phptest.php <html> <head> <title>PHP-TEST 001</title> </head> <body> <?php if($_GET[´funktion´]==0) { bericht("bericht1.txt"); } function bericht($file) { echo("$ueberschrift<br><br>"); include("$file"); } ?> </body> </html> [/code] und [code] bericht1.txt <?php $ueberschrift = "Hallo"; ?> Text Text Text [/code] Das ganze ist stark vereinfacht. Er soll erst die Überschrift und dann den Text ausgeben. Die Überschrift muss eine eigene Variable bleiben. Er gibt sie aber leider nicht aus, ich vermute, dass mein Kommando in der php-Datei nicht stimmt (um auf die Variable aus der txt zuzugreifen). Kann mir da wer weiterhelfen? Danke!

Antwort 1 von jotobi

<== Threadstarter, nur eingeloggt

Ist das überhaupt so realisierbar? Gibt es eine Methode die wie require() oder include() die variablen ausliest, aber die Datei nicht ausgibt?

Antwort 2 von rabies

Der Fehler in Deinem oben aufgeführtem Script ist, dass Du versuchst, auf eine Variable zuzugreifen, die noch gar nicht vorhanden ist. Der Zugriff auf $ueberschrift ist erst möglich, wenn die Datei bericht1.txt geladen wurde.

Ich würde allerdings von solchen Verfahrensweisen abraten, da man so einen in PHP vergegeben Variablennamen nach außen hin sichtbar macht. Soetwas sollte aufgrund der Sicherheit schon vermieden werden.


Andere Möglichkeiten für Dein Vorhaben kann man Dir sicher nennen, wenn Du uns sagst, was genau Du überhaupt vorhast.

--rabies.

Antwort 3 von jotobi

Ich möchte einen Artikel schreiben, einen neuen Artikel soll jedermensch nach einmaliger einweisung einfügen können. Es soll dazu eine txt-Datei erstellt werden, die die Variable $ueberschrift enthält (wird gesondert formatiert ausgegeben) und den Artikeltext. Den könnt ich theoretisch natürlich auch in Strings verpacken...wäre das besser?

Antwort 4 von jotobi

ich seh grad: wäre es nicht, da die txt den variablennamen ausspuckt. Könnte natürlich auch die Überschrift erst in der PHP setzen, dann wär das Problem umgangen...wär das denn besser? ;)

Antwort 5 von ClemBra

Wie wäre es, wenn man sagt, die Überschrift ist immer in der ersten Zeile und liest diese mittels f???-Operationen getrennt aus. Wenn es mehrere Variablen werden einen kleinen Parser bauen, z.B.

:header=Das ist die Überschrift
:author=ich
Und hier kommt der Text...
ein langer Text...

Dann muss der Parser oben anfangen und so lange Zeilen bearbeiten, wie sie mit einem Doppelpunkt starten. Der Rest wird dann einfach ausgegeben.

Antwort 6 von jotobi

öhm ich verstehe nicht ganz, was du meinst. Das Gebiet php ist gänzlich neu für mich, daher bitte ich um Erklärung :)

Antwort 7 von ClemBra

Ich hab mal ein Beispiel geschrieben.
Komplett zu finden unter meinem Webspace
Das wichtigste, falls ich die Dateien bei mir mal lösche, hier direkt:

while ($line = fgets($flink, 1024)) {
    if (!preg_match(´/^:(.*?)\s+(.*?)\s*$/´, $line, $match)) {
        break; // Schleife abbrechen
    }
    $value = $match[2];
    $cmd   = $match[1];
    // Nicht einfach in das Array schreiben weil
    // - Sicherheitslücke
    // - evtl. aufwändigere Parameter hinzukommen, die weitere Prüfung erfordern
    //   bsp. E-Mail-Adressprüfung oder Datumsformatierungen
    switch (strtolower($cmd)) {
    case ´title´:
    case ´header´:
    case ´author´:
        $param[strtolower($cmd)] = $value;
        break;
    default:
        // Evtl. eine Ausgabe von wegen "unbekannter Parameter"
        echo ´<i>Unbekannter Parameter: "´ . $cmd . ´"</i>´ . "\n";
    }
}
// Den Cursor eine Zeile zurücksetzen
fseek($flink, -strlen($line), SEEK_CUR);
// Den Text einlesen
$text = fread($flink, filesize($fname));