2012-04-07 120 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