ugrás a tartalomhoz

Adatbázisban tárolt PHP-s tartalom feldolgozása

bvc · 2010. Jan. 28. (Cs), 14.00
Sziasztok!

Egy kis segítség, vagy ötlet kellene az alábbi problémám megoldásához:
Adott egy szokásos honlap menüpontokkal. A menüpontok kiválasztása által megjelenő tartalom adatbázisban van letárolva. Egy ilyen adatcellában tehát ilyesmi szöveges adatok vannak:

<BR>
<P STYLE=”font-size:12px;color:#123456;”>Szöveg...</P>
...


A weblapok jobb oldali tartalma, minden menühöz külön le van tárolva. Ez egy külön DIV elemben jelenik meg. Minden jól működik, de néhány lapnál szükségem lenne php-s kódok használatára is. De sajnos a PHP kódot nem hajtja végre így, hanem 1:1-ben kiírja, vagy egyszerűen kihagyja. Kérdésem milyen módon lehetne megoldani, hogy az adatbázisban tárolt szövegben itt-ott előforduló PHP-s betéteket is végrehajtsa a böngésző a tartalom megjelenésekor.
A segítséget köszönöm.
 
1

eval

bonga · 2010. Jan. 28. (Cs), 14.49
RTFM: http://hu.php.net/eval
2

Tegyük hozzá

janoszen · 2010. Jan. 28. (Cs), 21.53
Azt gyorsan tegyük hozzá, hogy ennek az elburjánzása komoly kérdéseket vet föl az alkalmazás kódminőségével szemben valamint kínosan ügyelni kell, hogy nehogy code execution vuln legyen belőle.
3

Köszönöm

bvc · 2010. Jan. 29. (P), 08.49
Köszönöm, otthon ki fogom próbálni az eval() függvénnyel. Remélem tényleg ilyen egyszerű a megoldás. :)
4

nem jó... :(

bvc · 2010. Jan. 29. (P), 17.29
Sajnos nem működik.
A megjelenített php oldal forráskódja így nézett ki amikor próbáltam, és ennyit is töltöttem be az adatbázisba a teszteléshez:

<br>
<div id='KeretContent'>
eval(<?php $x = "valami"; echo $x; ?>);
</div>
<div id='KeretFooter'>&nbsp;</div>


az eredmény a böngészőben meg csak ennyi lett:
eval();

Más ötlet?
5

Talán így?

bonga · 2010. Jún. 4. (P), 08.10
Azt hiszem csak a kódod rossz. Próbáld így:

<br>
<div id='KeretContent'>
<?php eval('$x = "valami"; echo $x;'); ?>
</div>
<div id='KeretFooter'>&nbsp;</div>
6

re:

bvc · 2010. Júl. 18. (V), 20.22
Köszi bonga, hamarosan kipróbálom.
Mondjuk logikus is, hogy így kellene inkább ahogy írtad! :)
Köszönöm.
7

Nagyon el vagy tévedve...

plip · 2010. Júl. 19. (H), 04.51
"az adatbázisban tárolt szövegben itt-ott előforduló PHP-s betéteket is végrehajtsa a böngésző a tartalom megjelenésekor."

Nagyon el vagy tévedve, a php kódot NEM a böngésző hajtja végre, hanem szerveroldalon a php-értelmező. Tehát ha egyszer átadtad a böngészőnek a php kódot (eval-lal, vagy anélkül, tökmindegy) az már nem tud vele semmit sem csinálni, csak megjeleníteni.

Alapjaiban rossz az elgondolásod, persze valahogy biztos meg lehet oldani így is, de nem ajánlott. Ne tárolj adatbázisban php kódot!

Bonga megoldása sem fog működni. Mivel adatbázisból szeded a php kódot, ezért az egy sima string lesz, amit ugyanúgy átad a böngészőnek, az pedig megjeleníti. Megoldás lehet, hogy az adatbázisból nyert stringet adod át az eval()-nak, de ez csak akkor fog működni, ha csak php kód van benne, a html részeken ki fog akadni.