0

変更された値を取得してデータベースに送信する方法を見つけようとしていますが、これまでのところあまり運がありませんでした。私が間違っていることについて何か考えはありますか?

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());
4

2 に答える 2

3

変更してみてください:

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

に:

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

ドキュメントには次のように記載されています。

インプレース エディター フォームが送信されると、エディターのパラメーターで指定された URL に POST 要求が 3 つのフォーム フィールドと共に送信されます。

書く$_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/ )。

于 2012-04-07T21:34:52.700 に答える
1

両方をキャプチャしてサンプル時間にリクエストするのに$_REQUEST役立つどちらを使用してみてください...$_GET$_POST

詳細については、 http://php.net/manual/en/function.mysql-real-escape-string.phpmysql_real_escape_stringを参照して SQL インジェクション ホールを修正してみてください。

ありがとう

于 2012-04-07T21:57:02.293 に答える