在搜索框中输入符号时出现错误。我已经使用 ajax 工具来验证像“'/etc.”这样的符号。这样,您就不能输入您声明为无效的任何符号。如果我要搜索包含该符号的字符或单词怎么办?例如,我要搜索的客户名称是 O'Brien,但如果我不允许输入该符号,我将如何搜索?
2 回答
这有点棘手。您不应该允许用户将此类内容添加到数据库中,我的意思是他不应该在注册时插入任何数据,这样您以后就不必担心了。如果您想让用户添加这些special
字符,那么您必须在让用户搜索该名称的同时进行编码工作。
解决方案:
如果您使用JavaScript
( jQuery
) 那么您可以试试这个:
你将在这里做的是:
首先获取输入值。
替换
'
字符将 ``(空)。然后检查这是否是唯一放置的字符。
代码如下:
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
。
你将无法做到。这就是您将该值设置为的原因invalid
。从invalid
符号中删除值,您将能够。
如果一个符号在某些时候有效但不是所有时候有效,那么默认情况下允许它可能比阻止它更好。这样,您就不太可能让最终用户感到不安。
如果您需要,那么您应该在处理搜索的代码中处理符号。