2012-04-07 118 views
0

我想弄清楚如何获取更改后的值提交给数据库,但迄今为止没有太多的运气。任何想法,我做错了什么?另一个就地编辑器 - 一个jQuery编辑插件

js文件:

$("#editme5").editInPlace({ 
    /*saving_animation_color: "#ECF2F8", 
    callback: function(idOfEditor, enteredText, orinalHTMLContent, settingsParams, animationCallbacks) { 
     animationCallbacks.didStartSaving(); 
     setTimeout(animationCallbacks.didEndSaving, 2000); 
     return enteredText; 
    },*/ 
    url: "server.php", 
    params: "name=BUSINESS_NAME" 
}); 

php文件:

include('database.php'); 
$_GET['name']; 
$_NAME=$_GET['name']; 

$update = $_POST['update_value']; 
$insert = "UPDATE CLIENTS SET ".$_NAME."='".$update."'"; 
mysql_query($insert) or die (mysql_error()); 
+0

我们应该知道你正在使用什么编辑器,以及它如何提交表单?顺便说一句,好的SQL注入漏洞。希望你会喜欢havinug你的数据库被丢弃。 – 2012-04-07 21:30:44

+0

我已经知道了。我只想先让东西工作。 – 2012-04-07 22:08:15

回答

3

尝试改变:

include('database.php'); 
$_GET['name']; 
$_NAME=$_GET['name']; 

要:

include('database.php'); 
$_NAME=$_POST['name']; 

文档说:

一旦就地编辑表单提交,发送POST请求 是在编辑器中的参数指定的同时还有3个 表单字段

由URL编写$_NAME=$_GET['name'];您期望值超过GET请求,但该插件使用POST请求发送值。我想这就是这里的罪魁祸首。

另外,请记住马克B在他的评论中所说的。该代码非常适合SQL注入攻击。为了减少损失,请至少使用mysql_real_escape_string()(更多:http://php.net/manual/pl/function.mysql-real-escape-string.php)或使用准备好的语句(一个好的教程:http://www.ultramegatech.com/2009/07/using-mysql-prepared-statements-in-php/)。

+0

从技术上讲,OP的这个编辑器可以同时使用查询字符串和发布数据,但我们无法分辨。但是,从客户端传递数据库字段名称比普通的SQL注入漏洞更加可怕。 – 2012-04-08 13:32:06