在数据库代码上使用php eval

时间:2012-11-07 21:11:13

标签: php mysql forms input eval

我正在尝试根据Mysql数据库中的信息自动生成表单。现在,一个表存储有关所需字段的信息 - 字段类型,maxlength,默认值等。

第二个表包含用于显示正确表单输入的html / php代码,该代码基于从前面提到的表中检索的信息。这些表都不包含任何用户输入的数据。为了处理和显示这个存储的代码,我一直在尝试使用php的eval函数。虽然我不确定这是一个很好的解决方案,但我能想到的唯一选择是使用php的include或使用jquery追加内容来检索几十个或两个行文件。我不想这样做的主要原因是避免使用几十个额外的文件。

这是我到目前为止的eval语句

eval("\$code=\"$field[input_code]\";");echo"<td>$code</td>";

以下是$ field ['input_code']

的一个内容示例
<input name='".$field['form_name']."'type='text'placeholder='".ucwords(str_replace('_',' ',$field['form_name']))."'".if($field['req']==1){echo"class='textvalreq'required";}else{echo"class='textval'";}.">

1 个答案:

答案 0 :(得分:1)

如果$field['input_code']包含表达式,

eval("\$code=\"$field[input_code]\";");

将无法工作,因为PHP会尝试做某事。像:

$code = "if (<condition>) { ... }";

这最终会以有效字符串结尾,但如果变量包含引号,那么所有地狱都会破裂。

对不起除了不在数据库中存储任意代码并尝试eval()之外,我没有看到解决问题的简单方法。

顺便说一下:eval()是邪恶的。