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?
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.
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.
Dann muss der Parser oben anfangen und so lange Zeilen bearbeiten, wie sie mit einem Doppelpunkt starten. Der Rest wird dann einfach ausgegeben.
: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:
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));

