2012-04-07 5 views
0

Ich versuche herauszufinden, wie man den geänderten Wert an die Datenbank schicken kann, aber bisher hatte ich noch nicht viel Glück. Irgendeine Idee, was ich falsch mache?Ein anderer In Place Editor - ein jQuery Edit in place Plugin

JS-Datei:

$("#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-Datei:

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

Und wir sollte nur wissen, welchen Editor Sie verwenden und wie es das Formular übermittelt? Schöne SQL-Injektionslöcher, übrigens. Hoffe, du wirst es genießen, deine Datenbank zu zerstören. –

+0

Das weiß ich schon. Ich möchte nur Sachen zuerst arbeiten lassen. –

Antwort

3

Ändern Versuchen:

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

An:

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

Die Dokumentation sagt:

Sobald das in-Place-Editor Formular abgeschickt wird, hat es eine POST-Anforderung an die URL sendet, die zusammen mit drei Formularfeldern im Editor-Parameter angegeben wird

von Schreiben $_NAME=$_GET['name']; Sie erwartet den Wert über eine GET Anfrage, aber das Plugin sendet den Wert mit einer POST Anfrage. Das ist der Schuldige hier, nehme ich an.

Denken Sie auch daran, was Marc B in seinem Kommentar gesagt hat. Der Code ist sehr anfällig für SQL-Injection-Angriffe. Um es weniger anfällig zu machen, verwenden Sie mindestensmysql_real_escape_string() (mehr: http://php.net/manual/pl/function.mysql-real-escape-string.php) oder verwenden Sie vorbereitete Anweisungen (ein gutes Tutorial: http://www.ultramegatech.com/2009/07/using-mysql-prepared-statements-in-php/).

+0

Technisch gesehen könnte dieser Editor der OPs sowohl Abfragezeichenfolgen als auch Postdaten verwenden, aber wir können es einfach nicht sagen. Die Übergabe von DB-Feldnamen von der Client-Seite ist jedoch noch abscheulicher als die reine SQL-Injection-Lücke. –