Unausgeführte PHP-Variable bei Dateiausgabe mittels JavaScript
Mary
- php
Viva!
Ich habe hier eine Seite, die fuer die JavaScript-Version Inhalt, der normalerweise ueber ein include eingebunden wird, per document.write() ausgeben soll.
Die auszugebenden PHP-Dateien enthalten HTML-Code wie PHP-Variablen (ansonsten keinerlei PHP-Code).
Funktioniert problemlos - nur die PHP-Variablen werden nicht interpretiert.
Ich dachte das Zauberwort heisst "eval" - funktioniert bei mir trotz alibaba nicht.
Hat jemand einen Vorschlag, wie man das vernuenftigerweise macht?
Hier ein Beispiel:
Datei contact.inc.php:
<span class="box">
<?= $street;?><br/>
13100 Berlin<br/>
Germany<br/>
</span>
Auslesen und ausgeben:
<script type="text/javascript">
<!--
<?
$datei = fopen ('contact.inc.php', 'r');
if($datei) {
while (!feof($datei)) {
$buffer = fgets($datei, 1024);
?>
document.write('<?= $buffer;?>');
<?
}
}
fclose ($datei);
?>
//-->
</script>
(### $buffer wird noch JS-konform gemacht vor der Ausgabe...)
ergibt:
document.write('<span class="box">');
document.write('<?= $street;?><br/>');
document.write('13100 Berlin<br/>');
document.write('Germany<br/>');
document.write('</span>');
Vielen Dank fuer jeden Hinweis,
Mary*
hi,
Ich dachte das Zauberwort heisst "eval"
erstens ist eval eher ein pfui- als ein zauberwort (man sollte es wenn es irgendwie anders geht nicht verwenden) - und zweitens sehe ich dich es in deinem beispielcode gar nicht anwenden.
$datei = fopen ('contact.inc.php', 'r');
if($datei) {
while (!feof($datei)) {
$buffer = fgets($datei, 1024);
?>
document.write('<?= $buffer;?>');
du liest hier den inhalt der datei über das dateisystem des servers ein - logischerweise wird dabei PHP nicht interpretiert, weil der parser gar nicht aufgerufen wird.
spricht denn etwas dagegen, include zu verwenden, um den inhalt der datei an die gewünschte stelle zu bekommen?
gruß,
wahsaga
dat ging ja fix...vielen Dank :)
Ich hatte es mit eval probiert - vor der Ausgabe:
eval ("$buffer = "$buffer";");
dabei kam raus: "parse error"
Ich denke, fuer gemischten Code geht eval nicht und wie Du selber auch schon gesagt hast, scheint eval grundsaetzlich die falsche Antwort zu sein, also hatte ich das verworfen.
Ich hatte es mit include probiert.
Leider war es mir nicht moeglich beispielsweise Apostrophs umzuwandeln oder vor allem saemtliche Zeilenumbrueche rauszuloeschen - das muss sein, weil document.write ja nur zeilenbezogen arbeitet, sonst ist der Befehl nicht abgeschlossen.
So sah es aus:
document.write('<?= phpToJs(include('include/contact.inc.php'));?>');
Vielleicht ist ja nur meine Umwandlungsfunktion falsch...???
function phpToJs($text) {
$text = str_replace("'","\'",$text);
$text = str_replace("\r","",$text);
$text = str_replace("\n","",$text);
$text = str_replace("\t","",$text);
return $text;
}
Selbst wenn ich den Umstand in Kauf nehme, die Dateien nur einzeilig zu machen, was ja irgendwie nicht der Sinn sein kann - langfristig gesehen - bleibt das Problem mit den Apostrophs.
Lieben Gruss,
mary*
Hello,
erstens ist eval eher ein pfui- als ein zauberwort (man sollte es wenn es irgendwie anders geht nicht verwenden) - und zweitens sehe ich dich es in deinem beispielcode gar nicht anwenden.
Nun mach mal halblang!
Wie soll man denn ohne eval() in einer Datei (Datenbank) gespeicherte PHP-Scripte oder Funktionen interpretieren lassen? Nur weil es durch manche 'Künstler' dafür verwendet wird, User-Code zu interpretieren, mahct doch das Sprachkonstrukt als solches noch nicht böse! Man muss eben wissen, welche Risiken man durch Freigabe von eval(), include(), require(), exec(), system(), shellexec(), & Co. eingeht.
Aber deshalb kann/sollte man für komplexe Programme ganz bestimmt nicht darauf verzichten.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
hi,
Wie soll man denn ohne eval() in einer Datei (Datenbank) gespeicherte PHP-Scripte oder Funktionen interpretieren lassen?
wer sagt denn, dass man scripte und funktionen in einer DB ablegen sollte?
Nur weil es durch manche 'Künstler' dafür verwendet wird, User-Code zu interpretieren, mahct doch das Sprachkonstrukt als solches noch nicht böse!
doch, irgendwie schon. es erschwert beispielsweise das debuggen oftmals ziemlich ...
gruß,
wahsaga
Hello,
Nur weil es durch manche 'Künstler' dafür verwendet wird, User-Code zu interpretieren, mahct doch das Sprachkonstrukt als solches noch nicht böse!
doch, irgendwie schon. es erschwert beispielsweise das debuggen oftmals ziemlich ...
Finde ich nicht. Man muss nur die passende Debugging-Strategie benutzen.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom