funkcja eval

1

ChcĘ na swojej stronie zrobic taki prosty tester kodu php.
Próbuje to wykonac w taki sposób że po wpisaniu kodu php w pasku adresu przeglądarki to on mi siE wykona na stronie:

przykład:
www.mojastrona.pl/index.php?instrukcja=...

A oto kod

<? eval($_GET["instrukcja"]); ?>

Po wpisaniu instrukcji np na wyswietlenie wszystkich plikow na stronie :

<? $dir = opendir('html'); while(false !== ($file = readdir($dir))) if($file != '.' && $file != '..') echo $file . '
'; ?>

pojawia mi się taki błąd:
Parse error: syntax error, unexpected $end in /virtual/w/o/mojastrona.pl/index.php(2) : eval()'d code on line 1

Proszę o pomoc!!

0

bo do eval nie masz dawać <?php ani <? . Błąd oznacza że jest bład w składni, w 1 linii przesłanego stringa do eval.
Mam nadzieje że tworzysz kod tylko dla wlasnego uzytku....

0

Może też chodziło Ci raczej o $_POST? (w sensie, że "chcesz" $_POST bardziej niż $_GET)

0

Ja nie dawałem tego w <? tylko tutaj wstawiłem z tym własnie.
Więc nie w tym problem.

Powiem jeszcze że jak dam jakąs prostą instrukcję to on się wykona prawidłowo.
np echo ('blabla');

a jak kod php jest skomplikowany bardziej jak wczesniej to wyskakuje ten błąd co podałem w poprzednim poście.
Więc w czym jest problem?Może każdą linijkę kodu jakoś trzeba oddzielac?

0

Błąd oznacza że jest bład w składni, w 1 linii przesłanego stringa do eval.

Błąd oznacza że jest bład w składni, w 1 linii przesłanego stringa do eval.

Błąd oznacza że jest bład w składni, w 1 linii przesłanego stringa do eval.

Błąd oznacza że jest bład w składni, w 1 linii przesłanego stringa do eval.

Błąd oznacza że jest bład w składni, w 1 linii przesłanego stringa do eval.

Błąd oznacza że jest bład w składni, w 1 linii przesłanego stringa do eval.

0

Wyświetl $_GET["instrukcja"]- czy to rzeczywiście jest poprawny kod?
edit: u mnie ten kod działa, jeśli dodam / po nazwie katalogu. ;)
edit: meh, chodziło mi o kod z manuala: http://php.net/manual/en/function.opendir.php
ten działa bez / na końcu nazwy katalogu. ;)

edit:
Tego kodu użyłem:

<?php 
$text = isset($_GET['text']) 
    ? $_GET['text']
    : 'echo 3.33 * 2 * 10 * 10;';
?>
<pre><?php eval($text); ?></pre>

<form method="GET" action="">
    <textarea name="text" style="width: 700px;"><?php echo $text ?></textarea>
    <input type="submit" />
</form>

I podając:

$dir = opendir('.');
while(false !== ($file = readdir($dir)))
  if($file != '.' && $file != '..')
    echo $file . '<br />';

wszystko działa ok. Tylko nie widzę za bardzo sensu w wysyłaniu tego za pomocą GET, w POST można zwykle zmieścić dużo więcej danych. :P

1 użytkowników online, w tym zalogowanych: 0, gości: 1