2012-04-23 5 views
0

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

私は私の問題は、私はテキストエリアから行を取得する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は、すべてのテキストアラインを組み合わせた1つの文字列のようです。

私はこの方法で上記のPHPコードが動作しないことを知っており、結果としてすべての行を保存します!

私が望むもの:各txtarea-lineを別々にdbに保存します。

答えて

1

"data"属性は、 "属性":値のペアを持つオブジェクトを必要とし、それに文字列を与えます。

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

作品! :) ありがとうございました! – Andrej

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); 
    } 
} 
+0

これは直接動作しない可能性があります。おそらく、改行をajaxスクリプト内の特殊文字で置き換える必要があります。 – Paul

0

私は次のメソッド呼び出しでこれを行うだろう:これはあなたのテキストのすべての行の配列を与える

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

。この後は、それを反復してすべての値をデータベースに追加するだけで済みます。

+1

$ lines = explode(PHP_EOL、$ string); –

0

あなたの問題は、この範囲内にある:

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

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

0

$ _POST ["user_ip"]に含まれているものを表示しておけば助かりました。

$ .val()メソッドは、の最初の要素の値を返します。そのため、複数のテキストエリアでは機能しません。

文字列値を取得し、それを行単位の文字列配列に変換してから、暗黙の変換を行って単一の文字列に戻します - なぜですか?あなたのスクリプトに 'content'値を送って、改行で分割してください。

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

関連する問題