[PHP] eval() probleempje

Pagina: 1
Acties:
  • 38 views sinds 30-01-2008

  • Scyth
  • Registratie: Juli 2001
  • Laatst online: 16-03-2024

Scyth

Fat finger, three beer

Topicstarter
Ik zit met het volgende probleem; en wel:

PHP:
1
2
3
4
5
<?
  $key = "getenv(SERVER_NAME)";
  eval("\$var = \$key;");
  echo "server: $var";
?>


Weliswaar ernstig versimpeld, maar wel de kern van het probleem.

De eerste regel wordt in het echt vervangen door een database query, waar dus een string uit komt die ge-eval()'d moet worden om de goede waarde van de string te krijgen. Echter, als ik simpelweg dit doe:

PHP:
1
2
3
4
<?
  $key = "getenv(SERVER_NAME)";
  echo eval("\$key");
?>


werkt het uiteraard ook niet.

Iemand een idee hoe ik de waarde (dus bijvoorbeeld "www.potjejam.nl") van getenv(SERVER_NAME) toch met eval uit die string kan halen?

ik begrijp de gevaren van eval() goed, ik hoef dus geen lezing over de gevaren ervan.

Dell Studio XPS 16
Project: BavBierSub 1.0 BavBierSub 2.0


  • pimlie
  • Registratie: November 2000
  • Laatst online: 30-04 11:20
PHP:
1
eval("\$var = ".$key.";");

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

PHP:
1
eval('$var = ' . $key . ';');

Om te beginnen is dit wel erg eenvoudig zelf te verzinnen, en daarom doe ik je topic ook op slot. Verder is eval gewoon vies. Je hebt het over gevaren, maar belangrijker vind ik de designfouten die er 99 uit 100 keer aan vooraf gaan. Een database is voor opslag van data, niet voor opslag van logica. Als ik jou was zou ik serieus even wat na gaan denken over je ontwerp. :)

[ Voor 3% gewijzigd door NMe op 14-09-2005 23:15 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Dit topic is gesloten.