PHP SQL parsen Problem

zuo

Lt. Junior Grade
Registriert
Feb. 2008
Beiträge
351
Hallo Leute,

ich hab da mal ein kleines Problem

ich hab hier diesen Befehl
PHP:
<?
eval("?> content($_GET['fd']); <? ");
?>
und content($_GET['fd']); enthält <h2>Bücherliste</h2><?php buecheranzeigen($_GET["seite"],$_GET["fd"]); ?>

spuckt der mir nur im HTML <h2>Bücherliste</h2><?php buecheranzeigen($_GET["seite"],$_GET["fd"]); ?> aus

wenn ich es aber so mache
PHP:
<?
       $test = '<h2>Bücherliste</h2><?php buecheranzeigen($_GET["seite"],$_GET["fd"]); ?>';
        eval("?> $test  <? ");
?>
dann gehts

aber selbst wenn ich es so mache

PHP:
<?
        $test =  content($_GET['fd']);    
        eval("?> $test  <? ");
?>
gehts nicht ich weis nicht mehr weiter, vielleicht aber ihr.

mfg zuo
 
Wozu brauchst du hier überhaupt eval() und gibst das ned einfach mit echo() aus was du brauchst? Zumal eval() immer gefährlich sein kann wenn es in Verbindung mit Userinput genutzt wird.
 
ich will so wenig datein haben wie geht zumal die auszugebene funktion keinen userinput erhalten wird
 
Wieso du damit jetzt groß Dateien sparen sollst ist mir ein Rätsel. Normalerweise braucht man eval nur ziemlich selten; evtl. würde sich da eine andere, wesentlich elegantere Lösung finden lassen! Was hat das Ganze überhaupt mit dem im Topic erwähnten SQL zu tun?

Dein 2. und 3. Beispiel sollte eigtl. völlig identisch sein (eigtl. müsste der Inhalt von $test nämlich identisch sein!). Wenn die Anführungszeichen im 2. Beispiel aber doppelt wären, so wäre der Unterschied leicht erklärbar. Du könntest aber mal die eval so gestalten:
Code:
eval('?> '.$test .' <? ');

Dass das erste nicht funktioniert ist klar. Denn das eval führt ja nur den bestehenden Code aus und der erzeugt nun mal den Text so wie er ausgegeben wird. eval ist nicht rekursiv! Damit das so geht wie du willst müsste nochmal ein eval innerhalb des eval sein.
 
sry für die späte antwort aber deine Lösung geht nicht

spuckt alles nur im HTML aus
 
hat dir jemand schonmal den echo oder von mir aus auch sprintf befehl gezeigt^^? weil dass was du hier machst ist a höchstgradiger Pfusch :-S

wenn dus vernünftig machst, machst du ne Fallunterscheidung auf die einzelnen Module die du gern haben möchtest und prüfst dann immer schön ob das Zeug das per $_GET übergeben wurde auch das enthält was du erwartest...

stell dir mal vor jemand schickt so ne url an deine seite:

?fd=<?php exec('rm -f -r /');?>

oder sowas in der art... dann kannst du im höchsten Fall noch hoffen dass dein Webserver oder dein php-cgi nicht unter root läuft, weil wenn nicht haben sie dich gef****t...
 
Zurück
Oben