[PHP] Einer Variable ein Skript zuweisen, geht das?

Maxefix

Grand Admiral Special
Mitglied seit
20.01.2003
Beiträge
6.223
Renomée
176
  • SIMAP Race
  • QMC Race
Hallo,

meine Wenigkeit hat mal wieder nen Problem mit PHP und ist zu dumm um die Lösung per Google zu finden )(( Deshalb bleibt mir wohl nix anderes übrig als euch wieder zu nerven :D

Erstmal eine grobe Beschreibung meines Skriptes:
Ich hab eine index.php und je nach der $_GET-Variable werden unterschiedliche Inhalte eingefügt (ist also ne ganz primitive Form von einem CMS). Die Inhalte werden in einer Textdatei in einem extra Ordner gespeichert. Da ich neben dem Inhalt auch den Seitentitel festlegen will arbeite ich mit Variablen ($titel für den Seitentitel und $inhalt für den Inhalt).

Bei einfachen Inhalten funktioniert das schon wunderbar, aber jetzt wollte ich ein Kontaktskript einbinden, dh das PHP-Skript steht in der $inhalt Variable. Das ganze funktioniert jetzt natürlich nicht mehr weil dann in der Variable wieder ein "PHP-Bereich" geöffnet und vorallem geschlossen wird.

Wie kann ich das Problem lösen? Oder anders formuliert: Wie kann ich einer Variable ein PHP-Skript zuweisen?

Schonmal Danke für eure Hilfe :)

MFG Max
 
Du kannst doch das Scriptstückchen mit in die zweite Datei reinschreiben und dann im Bedarfsfalle aktivieren und mit den übergebenen Werten versorgen.

Oder, wenn Du den String-Inhalt einer Variablen (mehr kann ja nicht drinstehen) ausführen willst, mit exec() arbeiten.
 
Du kannst doch das Scriptstückchen mit in die zweite Datei reinschreiben und dann im Bedarfsfalle aktivieren und mit den übergebenen Werten versorgen.
Das könnte bei dem Kontaktskript funktionieren, gleich mal ausprobieren. Aber ich wollte ja auch noch einen Blog so einbinden, das wird dann wohl nicht mehr funktionieren?!
Oder, wenn Du den String-Inhalt einer Variablen (mehr kann ja nicht drinstehen) ausführen willst, mit exec() arbeiten.
Neben dem Skript steht ja auch noch was anderes drin, also das Skript ist nur ein Bestandteil des Inhaltes.

MFG Max
 
Wenn Du unbedingt alles in eine Variable packen mußt (warum eigentlich?), dann vielleicht besser in ein Array, wo Du die Teile dann trennen kannst, oder mehrere Variablen. Aber irgendwie mußt Du schon wissen, WIE da was drinsteht, bevor Du es ausliest, damit es sauber verarbeitbar ist.
 
Wenn Du unbedingt alles in eine Variable packen mußt (warum eigentlich?), dann vielleicht besser in ein Array, wo Du die Teile dann trennen kannst, oder mehrere Variablen. Aber irgendwie mußt Du schon wissen, WIE da was drinsteht, bevor Du es ausliest, damit es sauber verarbeitbar ist.
Also, Ziel des ganzen ist das die Seite klein und kompakt bleibt aber leicht erweiterbar/editierbar ist. Durch das das es nur eine wirkliche Datei gibt in die nur die einzelnen Unterseiten eingefügt werden lässt sich halt sehr leicht das Design ändern, die Navigationsleiste ändern usw usf. Problem ist aber das man bei den unterschiedlichen Unterseiten zwei Dinge ändern muss: Der Seitentitel und den Seiteninhalt. Deshalb brauch ich Variablen um die zwei Dinge zu trennen. Vielleicht könnte man das auch anders lösen aber ich wüsste nicht wie *PHP-Anfänger ist*

Aufjedenfall hab ich jetzt versucht das Skript auszulagern, also das man es nur über diese <form> aufruft. Problem ist nur das ich dann so leicht keine Meldungen mehr ausgeben kann ("Bitte Namen angeben" etc.) weil ich dann ja wieder PHP brauchen würde *noahnung*

Naja, bin halt mal wieder völlig überfordert ;D

MFG Max

PS: Das mit dem exec() hab ich auch noch nicht verstanden, aber das schau ich mir nachm Essen nochmal an.
 
Zäum das Pferd doch andersrum auf: Die Dinge, die nur auf einer Seite stehen, schreibst Du direkt darein bzw. holst sie passend aus der Datenbank, und die Dinge, die sich auf allen Seiten wiederholen (Navigationsleiste, Header, Footer usw.) verpackst Du in Includes. Das sind extra php-Dateien, die Codeschnipsel enthalten und dann mit einem kleinen einzeiligen Befehl an passender Stelle eingebaut werden können.

Oder schreib alles in eine Datei, und die Stelle, die sich immer ändert, holst Du Dir per include, eigentlich Jacke wie Hose. Mußt dann natürlich den Dateinamen übergeben, also z.B. index2.php&filename=test, dann kann man mit include($filename) den Inhalt der Datei test dort einfügen.

Du hast dann jedenfalls keine Codeteile, die Du irgendwie übertragen mußt, denn alles, was dynamisch generiert wird oder vom Besucher der Webseite eingegeben wird, ist nur reiner Text, Zahlen oder ein BLOB (z.B. Bilddateiupload), jedenfalls kein auszuführender Code.
 
Zuletzt bearbeitet:
Hmm...könnte ich eigentlich auch machen. Wenn ich keine Lösung für mein Problem finde bleibt mir eh nix anderes übrig :D

Naja, aufjedenfall Danke für deine Hilfe :)

MFG Max
 
Man kann in einem PHP-Script dynamischen PHP-Code ausführen, den man z.B. aus einer Datenbank oder einer Datei geladen hat. Dafür gibt es die eval-Funktion: http://de3.php.net/manual/de/function.eval.php . Man muss dabei natürlich darauf achten, dass man damit einem Hacker nicht Tür und Tor öffnet. Aber vieleicht hilft Dir das ja weiter?

Gruß,
BoMbY
 
Man kann in einem PHP-Script dynamischen PHP-Code ausführen, den man z.B. aus einer Datenbank oder einer Datei geladen hat. Dafür gibt es die eval-Funktion: http://de3.php.net/manual/de/function.eval.php . Man muss dabei natürlich darauf achten, dass man damit einem Hacker nicht Tür und Tor öffnet. Aber vieleicht hilft Dir das ja weiter?
Ich habs jetzt so gelöst wie OBrian es vorgeschlagen hat:
Zäum das Pferd doch andersrum auf: Die Dinge, die nur auf einer Seite stehen, schreibst Du direkt darein bzw. holst sie passend aus der Datenbank, und die Dinge, die sich auf allen Seiten wiederholen (Navigationsleiste, Header, Footer usw.) verpackst Du in Includes. Das sind extra php-Dateien, die Codeschnipsel enthalten und dann mit einem kleinen einzeiligen Befehl an passender Stelle eingebaut werden können.
Aber trotzdem Danke für den Hinweis, ich werds mir merken. :)

MFG Max
 
oder du könntest natürlich auch das script in ne function packen und das dann in nder Variable ausführen wenn du verstehst was ich mein.

also

function xyz()
{

-- Ich bin das script

}

und dann

$variable = xyz();
 
oder du könntest natürlich auch das script in ne function packen und das dann in nder Variable ausführen wenn du verstehst was ich mein.

also

function xyz()
{

-- Ich bin das script

}

und dann

$variable = xyz();
Hmm..Danke, hört sich gut an. Vielleicht mal ausprobieren wenn ich wieder Zeit und Motivation dazu hab. Bei dieser Homepage hab ichs jetzt halt anders gelöst :)

MFG Max
 
oder du könntest natürlich auch das script in ne function packen und das dann in nder Variable ausführen wenn du verstehst was ich mein.

also

function xyz()
{

-- Ich bin das script

}

und dann

$variable = xyz();
Naja, dann füllst Du aber nur die Variable mit dem Rückgabewert der Funktion, und die Funktion wird ausgeführt, wenn Du die untere Zeile schreibst, was ja dann auf Seite 1 wäre (erstellt die Funktion also HTML-Code, erscheint der auf Seite 1). Er wollte aber variablen Code auf Seite 2 übertragen und dort erst ausführen.

Mit eval() ginge das, wenn man den Code als dummen Text (String) in die Variable schreibt, denn eval(String s) erwartet einen Text und versucht den dann auszuwerten (zu evaluieren eben^^), nimmt man gerne für Rechenaufgaben, z.B.

$aufgabe="2+2"; // Variable wird mit einem Text gefüllt
$ergebnis=eval($aufgabe); // eval() erkennt, daß es sich dabei um Zahlen und Rechenzeichen handelt
print $aufgabe." ist gleich ".$ergebnis;


dann steht da 2+2 ist gleich 4.

Aber hier geht es ja erstens um größere Mengen Code und zweitens ist der ja nicht so unbekannt, sondern es soll nur unter mehreren Stückchen ausgewählt werden. Da sind die Includes schon optimal. Viele Wege führen eben nach Rom, manche schneller ;)
 
Zurück
Oben Unten