我尝试制作 e eval 代码,但出了点问题,我找不到错误。
我有这个:
解析错误:语法错误,/Applications/XAMPP/xamppfiles/htdocs/classes/databasehandler.php(57) 中的意外“,”:第 1 行的 eval() 代码
这是代码:
eval("$s->bind_param('".$binds."', ".$values.");");
$BINDS ARE: ss
$VALUES ARE: 'testing','hej123'
你为什么用eval()这个?它可以实现如下:
$binds = 'si';
$values = array('a string', 4609);
$args = array($binds) + $values;
call_user_func_array(array($s, 'bind_param'), $args);
上面的代码更快(不调用新的执行上下文),更安全(变量直接传递,没有转义的假设)。
双引号由 PHP 解析,因此eval("$s->bind_param...");等于eval($s."->bind_param...');. 用单引号替换双引号,您的EVIL代码将起作用。
If you're sure your values are delimited by comma's why not create the array yourself?
$values = explode(',',preg_replace('/[\'"]/g','',$values));
Or something like that?
不要使用 Eval,当然也不要用于将参数绑定到查询这样琐碎的事情!