1

用户可以在输入框中输入一些特殊字符:</p>

 <input type="text" name="task_description" id="task_description" value="<?cs var:Query.task_description?>">

例如双引号和单引号。我需要获取他们的输入文本并将 task_description 插入到我的数据库表中。

在我的服务器上,我使用 C++ 编写我的 cgi,我的数据库是 mySQL。

用户的输入将以 JSON 格式传输到服务器。

问题出在服务器端,当我想获取用户输入的字符串时

JSON,我就是找不到合适的。例如:

如果用户输入:

你好你好

在服务器端,我得到 JSON 中的输入字符串,如下所示:

static string get_escape_string(const string& src)
{
     static char escape_buffer[1024*1024];
     mysql_escape_string(escape_buffer, src.c_str(), src.length());
     string dst(escape_buffer, strlen(escape_buffer));
     return dst;
 }

//here is how I get the user's input
string remarks = get_escape_string(record[i]["remarks"].asString());

“记录”是JSON数据,操作后我只能得到:你好

它在第一个双引号处被截断。

我尝试在前端javascript代码中使用函数“escape”,但“escape”不能

代码双引号。

我该如何处理双引号和单引号?

提前致谢!

4

1 回答 1

1

我该如何处理双引号和单引号?

处理所有数据库输入的方式相同:使用参数化查询。永远不要使用字符串连接来构建 SQL 字符串。(必须链接到 xkcd。)

你如何做到这一点取决于你使用的服务器端技术,你没有列出。

同样,当将某些内容的文本输出到valueHTML 中的属性中时,您需要使用一个函数(可能在您的服务器端环境中提供)将该文本正确编码为 HTML(因为属性值是 HTML),这会将双引号变成&quot;实体和类似的。

于 2013-06-19T06:32:47.863 回答