0

私の目標は、テキストエリアから各行を抽出し、それをmysqlデータベースに保存することです。

私の問題は、AJAX関数またはテキスト領域から行を取得する部分にあると思いますが、自分自身を確認してください。

//#userip = textarea;


    var content = $("#user_ip").val();
    var ips = content.split("\n");

    $.ajax({
        type:       'POST',
        url:        'inc.php?ban_user',
        data:       'user_ip='+ips,
        dataType:   'html',
        success:    function(data) {
            alert(data);
        },
            error: function() {
                alert("Error");
        }
    });

そして、PHPの部分は次のとおりです。

        if (isset($_POST["user_ip"])) {

        $user_ip   = htmlspecialchars(trim($_POST["user_ip"]));

            mysql_query("INSERT into banned (ip) values ('$user_ip')") or die(mysql_error());

        echo($user_ip);

    }

この時点$user_ipでは、すべてのtextarealinesを組み合わせた1つの文字列にすぎないようです。

この方法では上記のphpコードが機能せず、1つの結果としてすべての行が保存されることを私は知っています!

必要なもの:各txtarea-lineをデータベースに個別に保存します。

4

5 に答える 5

1

「data」属性は「attribute」:valueペアを持つオブジェクトを必要とし、あなたは彼に文字列を与えます。

$.ajax({
        type:       'POST',
        url:        'inc.php?ban_user',
        data:       {'user_ip': ips},
        dataType:   'html',
        success:    function(data) {
            alert(data);
        },
            error: function() {
                alert("Error");
        }
    });
于 2012-04-23T11:40:06.673 に答える
0

あなたの問題はこれの中にあります:

var ips = content.split("\n");

split()すべての文字列の配列を返します。

于 2012-04-23T11:41:25.890 に答える
0

$_POST["user_ip"]の内容を教えていただければ助かります。

$ .val()メソッドは、セットの最初の要素から値を返します。そのため、複数のテキスト領域では機能しません(それが機能すると思われる場合)。

文字列値を取得し、それを文字列の行ごとの配列に変換してから、暗黙的に単一の文字列に変換し直します-なぜですか?'content'値をスクリプトに送信し、そこで改行で分割するだけです。

(そしてところで、コードはまだSQLインジェクションに対して脆弱です)。

于 2012-04-23T11:44:26.573 に答える
0

ユーザーが入力した文字列をクライアント側(ajax)で分割せず、phpスクリプト内で分割します。

if (isset($_POST["user_ip"])) {
  $user_ip   = explode("\n",htmlspecialchars(trim($_POST["user_ip"])));
  foreach ( $user_ip AS $uip ) {
    mysql_query("INSERT into banned (ip) values ('$uip')") or die(mysql_error());
    echo($uip);
  }
}
于 2012-04-23T11:38:53.087 に答える
0

これは、次のメソッド呼び出しで行います。

$lines = preg_split( '/\r\n|\r|\n/', $string );

これにより、テキスト内のすべての行の配列が得られます。この後、それを繰り返し処理し、すべての値をデータベースに追加するだけです。

于 2012-04-23T11:39:15.530 に答える