0

我的目标是从文本区域中提取每一行并将其保存到我的 mysql 数据库中。

我认为我的问题在于 AJAX 函数或我从 textarea 中获取行的部分,但请看你自己:

//#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 组合的一个字符串。

我知道这样上面的 php 代码将无法工作,它会将所有行保存为一个结果!

我想要什么:将每个 txtarea-line 单独保存在我的数据库中。

4

5 回答 5

1

“数据”属性想要一个具有“属性”的对象:值对,你给他一个字符串。

$.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

如果您向我们展示了 $_POST["user_ip"] 包含的内容,那将会很有帮助。

$.val() 方法从集合中的第一个元素返回值 - 所以它不适用于多个文本区域(如果你认为它是这样的话)。

您获取字符串值并将其转换为字符串的逐行数组,然后进行隐式转换回单个字符串 - 为什么?只需将“内容”值发送到您的脚本,然后在那里用换行符分割。

(顺便说一句,代码仍然容易受到 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 回答
0

your problem lies within this:

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

split() returns an array of all the strings.

于 2012-04-23T11:41:25.890 回答