Работа с eval(), что не так?

4m@t!c

Александр
Работа с eval(), что не так?

PHP:
   $f_var = "test";
   $str_eval = "isset(\$_GET[\"".$f_var."\"])";
   echo $str_eval."<BR>";
   eval("\$flag = $str_eval;");
   if($str_eval)
   {
      $str_eval =  "\$_SESSION[\"".$f_var."\"] = \$_POST[\"".$f_var."\"]";
      echo $str_eval."<BR>";
      eval("$str_eval;");
      echo $_SESSION["test"];
Выдает строки
Код:
Notice: Undefined index: test in e:\apache\www\tmp.php(47) : eval()'d code on line 1
Вопрос, где собака порылась?
 

4m@t!c

Александр
Это я выбрал кусок фуькции, которая инициализирует переменные сеанса. Их много - около 18 штук. Вот и решил, что бы не писать ручками все, проше написать фнукцию и передавать туда индекс переменной массива? А в чем глупость? Я просто никогда не пользовался такими функциями.
 

IntenT

SkyDiver
4m@t!c
А в чем глупость
в том, что вместо
PHP:
$flag = isset($_GET[$f_var]); 
и
$_SESSION[$f_var] = $_POST[$f_var];
ты пишешь кучу ненужного кода, в котором к тому-же делаешь трудно находимые ошибки, и предоставляешь классные дыры с всоем скрипте.
 

4m@t!c

Александр
Спасибо, увидел, что Проверяю массив GET, а присваиваю значение из массива POST. Плюс я не знал, что так "интересно" интерпретирует индекс массива..;(((. Порылся и нашел - есть понятие "Переменные переменных".
я так понимаю сама функция eval() - представляет дыру, если так же, как я, передавать значения. вводимые пользователем. Получится, она может выполнить код., плохой код.
Еще раз спасибо.
 
Сверху