0

在搜索框中输入符号时出现错误。我已经使用 ajax 工具来验证像“'/etc.”这样的符号。这样,您就不能输入您声明为无效的任何符号。如果我要搜索包含该符号的字符或单词怎么办?例如,我要搜索的客户名称是 O'Brien,但如果我不允许输入该符号,我将如何搜索?

4

2 回答 2

0

这有点棘手。您不应该允许用户将此类内容添加到数据库中,我的意思是他不应该在注册时插入任何数据,这样您以后就不必担心了。如果您想让用户添加这些special字符,那么您必须在让用户搜索该名称的同时进行编码工作。

解决方案:

如果您使用JavaScript( jQuery) 那么您可以试试这个:

你将在这里做的是:

  1. 首先获取输入值。

  2. 替换'字符将 ``(空)。

  3. 然后检查这是否是唯一放置的字符。

代码如下:

if($('#input-id').val().replace("'", "") == "") { // only quote was written
   $('#input-id').val(''); // and tell him to write a name..
} else {
   // search for name..
}

其次,我假设您在谈论 SQL 注入,因为'在 SQL 的 Select 子句中使用LIKE会破坏查询,所以我将首先尝试告诉您,要么保存名称而不使用这些字符,要么尝试将它们更改为其他格式。这里http://www.ascii.cl/htmlcodes.htm

否则,请尝试了解 SQL 注入。

阿贾克斯:

您说您使用的是 Ajax,所以如果您使用的是ASP.NET. 你可以使用这个:

var data = Request["data"];
data.ToString().Replace("'", "");
if(data == "") {
   // tell him to behave!
} else {
   // search for name..
}

这是在不使用任何插件的情况下摆脱这些字符的最简单方法。

它只是JavaScript

于 2013-10-02T14:43:50.330 回答
0

你将无法做到。这就是您将该值设置为的原因invalid。从invalid符号中删除值,您将能够。

如果一个符号在某些时候有效但不是所有时候有效,那么默认情况下允许它可能比阻止它更好。这样,您就不太可能让最终用户感到不安。

如果您需要,那么您应该在处理搜索的代码中处理符号。

于 2013-10-02T14:38:08.123 回答