晚上好伙伴们,我有一个小问题,我试图解决,但只是不能,我希望你能帮助。
我有一个脚本,通过cURL将字符串发送到网站。这表现完全符合预期,网页响应良好。我的问题是网站上有一组我想要使用的定义(为了便于说明,下面的示例:)。我已经添加了对存储定义的文件的引用,这就像魅力一样。
define('TABLE_COUNTER','counter');
让我说(所有安全和mumbo-jumbo除外)我在发送到的网站上的脚本很简单:
的mysql_query($ _ POST [ 'AAA']);
$ _POST ['aaa']将是有效查询。如果在相关网站上我要执行以下操作,结果将执行:
mysql_query(“SELECT * FROM”。TABLE_COUNTER);
转化为:
mysql_query(“SELECT * FROM counter”);
但是我似乎无法在网站端获取脚本来执行任何带有常量定义的sqlquery。任何帮助将不胜感激(我在这里失去了很多头发!)。
谢谢!
答案 0 :(得分:0)
执行此操作的方法是使用eval
:
$myquery_string = 'mysql_query('.$_POST['aaa'].');';
eval($myquery_string);
但是,我并不建议这样做,因为这意味着表单输入可以包含几乎有效的PHP代码,并且它将由您的脚本执行。这比典型的SQL或XSS注入更糟糕。
此外,填写表单时,用户必须在查询的文字部分周围包含所有必要的引号。
更好的解决方案是为您的输入定义模板语言,并让PHP脚本用适当的常量替换模板占位符。但我不打算为你写这个。