0

我现在大部分时间都在与数据库插入问题作斗争,所以现在是时候寻求帮助了。

我的网站上有一个评论表单,它是通过 ajax 提交和处理的,10 次中有 9 次它会完美运行,但我注意到当你输入&字符时,它会过早地结束字符串,但仍然会在此之前将字符串插入数据库特点!

在我的评论部分,我允许在页面上显示时发布和突出显示代码片段,因此&在任何发布的片段中都非常需要该字符来进行比较。

我正在使用 MySQLi 类,转义函数只是一个基本的 real_escape,而 mynl2br 只是一个自定义 nl2br 函数,这是将评论数据插入数据库的代码:

$name = $db->escape($_POST['name']);
$email = $db->escape($_POST['email']);
$url = $db->escape($_POST['web']);
$comment = $db->escape(mynl2br($_POST['comments']));
$script_id = $db->escape($_POST['script_id']);

$insertData = array(
    '`author`' => ''.$name.'',
    '`email`' => ''.$email.'',
    '`url`' => ''.$url.'',
    '`comment`' => ''.$comment.'',
    '`script_id`' => ''.$script_id.'',
    '`time`' => ''.time().''
);

if ($db->insert('script_comments', $insertData)) {
    // sent success response back
    exit;   
}

谁能理解为什么 & 字符过早地结束了评论字符串?

4

1 回答 1

2

您的 Ajax 请求通过 GET 请求(应该是 POST)发送数据,并且数据encodeURIComponent()在 javascript 端没有正确转义。到目前为止,您的 PHP 脚本看起来不错。

于 2013-08-16T18:15:48.707 回答