[php] database text als script

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoe kan ik een scriptje uit een database als een echt script laten functioneren??

Stel je voor, dit haal je uit een database:
PHP:
1
2
3
<?
echo"Hello World";
?>
En je wil dat dit stukje text ook uitgevoerd word. Zoals ik het nu doe:
PHP:
1
2
3
4
5
6
7
8
9
<?
mysql_connect("localhost", "root", "");
mysql_select_db("main");

$q1 = mysql_query("SELECT * FROM scripts WHERE id = '$id'");
while ($l1 = mysql_fetch_object($q1)) {
    echo"$l1->script";
}
?>
Geeft hij gewoon de text weer, dus de code als HTML. Hij voert het niet uit. Wie weet hoe je dit wel kan laten gebeuren?

Alvast bedankt,
- Frag

Acties:
  • 0 Henk 'm!

  • eXtReMeBiE
  • Registratie: Februari 2002
  • Laatst online: 07-09 13:29
hint: je kunt een variabele niet beginnen met een cijfer...
[edit]waarmee ik doel op $11->....[/edit]

Stom :/ L1, leek op 11 :/

woei, ik las het net ;)

[ Voor 55% gewijzigd door eXtReMeBiE op 22-12-2002 19:01 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
eXtReMeBiE schreef op 22 december 2002 @ 18:59:
hint: je kunt een variabele niet beginnen met een cijfer...
Hint: Dat doet hij ook niet..... |:(

Maakt niet uit.. Kan gebeuren

[ Voor 13% gewijzigd door Verwijderd op 22-12-2002 19:03 ]


Acties:
  • 0 Henk 'm!

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 02-09 11:02

D2k

eXtReMeBiE schreef op 22 december 2002 @ 18:59:
hint: je kunt een variabele niet beginnen met een cijfer...
edit:
waarmee ik doel op $11->....

der staat <h1>L</h1>

Doet iets met Cloud (MS/IBM)


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
D2k schreef op 22 december 2002 @ 19:00:

[...]

der staat <h1>L</h1>
Zoo... Die heeft het begrepen.. Even let op het vlees keur merkt en ga dan lekker offtopic :D...

Maar weet iemand toevallig iets?

Acties:
  • 0 Henk 'm!

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 20-08 20:35
Verwijderd schreef op 22 December 2002 @ 18:57:
Hoe kan ik een scriptje uit een database als een echt script laten functioneren??

Stel je voor, dit haal je uit een database:
[...]Geeft hij gewoon de text weer, dus de code als HTML. Hij voert het niet uit. Wie weet hoe je dit wel kan laten gebeuren?

Alvast bedankt,
- Frag
Ik denk dat je eval zoekt:
http://www.php.net/eval

Acties:
  • 0 Henk 'm!

  • eXtReMeBiE
  • Registratie: Februari 2002
  • Laatst online: 07-09 13:29
Zou je het niet zo kunnen doen:
PHP:
1
2
3
$query = mysql_query(SELECT * FROM scripts WHERE id='$id');
$row = mysql_fetch_array($query);
echo $row['script'];
:?

Ok, staan de <?php en ?> tags wel in je script in de database?

[ Voor 23% gewijzigd door eXtReMeBiE op 22-12-2002 19:12 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
eXtReMeBiE schreef op 22 december 2002 @ 19:06:
Zou je het niet zo kunnen doen:
PHP:
1
2
3
$query = mysql_query(SELECT * FROM scripts WHERE id='$id');
$row = mysql_fetch_array($query);
echo $row['script'];
:?
Dan ben ik nog preciel hetzelfde af als in het begin.. Ook met functie eval werkt het ook niet. Tenminste, ik krijg het niet aan de praat...

Acties:
  • 0 Henk 'm!

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 20-08 20:35
Je wilt toch dat er uiteindelijk Hello world staat, dat moet toch echt met eval kunnen :)

PHP:
1
2
3
<?
echo"Hello World";
?>
En je wil dat dit stukje text ook uitgevoerd word. Zoals ik het nu doe:
PHP:
1
2
3
4
5
6
7
8
9
<?
mysql_connect("localhost", "root", "");
mysql_select_db("main");

$q1 = mysql_query("SELECT * FROM scripts WHERE id = '$id'");
while ($l1 = mysql_fetch_object($q1)) {
    eval($l1->script);
}
?>

Should do it :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
M4rt1nvW schreef op 22 december 2002 @ 19:11:
Je wilt toch dat er uiteindelijk Hello world staat, dat moet toch echt met eval kunnen :)

PHP:
1
2
3
<?
echo"Hello World";
?>
En je wil dat dit stukje text ook uitgevoerd word. Zoals ik het nu doe:
PHP:
1
2
3
4
5
6
7
8
9
<?
mysql_connect("localhost", "root", "");
mysql_select_db("main");

$q1 = mysql_query("SELECT * FROM scripts WHERE id = '$id'");
while ($l1 = mysql_fetch_object($q1)) {
    eval($l1->script);
}
?>

Should do it :)
Dan krijg ik deze error:
Parse error: parse error in c:\apache\htdocs\voorbeeld.php(7) : eval()'d code on line 1

Acties:
  • 0 Henk 'm!

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 20-08 20:35
dan zit er dus een parse error in de string die je probeert te parsen.

dat zal t missen van een spatie na echo zijn, :?
Of hij wil er geen <? en ?> omheen :?

[ Voor 40% gewijzigd door martinvw op 22-12-2002 19:21 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
lama....ik heb het al...

Als er in het script PHP tags (<? en ?>) kon hij het niet lezen. Dus daar doe ik een str_replace voor..

Bedankt voor de hulp

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PHP:
1
2
3
4
5
6
7
8
9
10
11
<? 
mysql_connect("localhost", "root", ""); 
mysql_select_db("main"); 

$q1 = mysql_query("SELECT * FROM scripts WHERE id = '$id'"); 
while ($l1 = mysql_fetch_object($q1)) {
    $script = str_replace("<?", "", $l1->script);
    $script = str_replace("?>", "", $script);
    eval($script); 
} 
?> 

Acties:
  • 0 Henk 'm!

  • Tom-Eric
  • Registratie: Oktober 2001
  • Laatst online: 25-03 09:11
strip dan de <? en ?> van de code!

edit: Laat maar hangen, is al gezegd :P

[ Voor 46% gewijzigd door Tom-Eric op 22-12-2002 19:24 ]

i76 | Webdesignersgids | Online Gitaarlessen & Muziekwinkels


Acties:
  • 0 Henk 'm!

Verwijderd

Als je dit soort dingen leuk vind moet je hier maar eens kijken:

Caching PHP Programs with PEAR:
http://www.onlamp.com/pub.../11/pearcache.html?page=2

Acties:
  • 0 Henk 'm!

  • ReLight
  • Registratie: Augustus 2001
  • Laatst online: 16-09 09:32

ReLight

echo("What Now ? !")

Dat komt omdat je escape slashes al moet mee geven in de opgeslagen code bij eval. ook voor $ => \$

dus echo\"hallo\"

en indd, de <?php ?> tags weg laten. een makkelijke manier is om eval te vervangen voor echo, dit moet code laten zien op schem welke direct cut'n paster in een normaal script te gebruiken is.

Mijn zoon & dochter zijn de toekomst, de rest is tijdsvermaak. Home assistant & & Nibe S2125-12/SMO-S40, RMU-s40 & Tado - Volvo C40 ER, SE


Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 17-09 07:55

thomaske

» » » » » »

Van tiplist:
eval ()
eval is vies. En nooit nodig. Je code wordt er onoverzichtelijk van, en daarnaast heb je er waarschijnlijk een backdoor bij in je site.
[Zie ook...]
ofwel: het is niet netjes / onlogisch / belachelijk / vies / etc. om je programma-logica in de database te zetten!

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."

Pagina: 1