我想禁止用户输入(例如)P *。
来搜索数据库http://www.aircrewremembered.com/DeutscheKreuzGoldDatabase/
我无法弄清楚如何将其添加到我已有的代码中。我猜测在行$trimmed = str_replace("\"","'",trim($search));
中使用数组是答案,用"\""
替换array
,但我似乎无法找到正确的方法。如果我只用\
替换*
,我可以让它工作,但我失去了"\"
字符的修剪:这有关系吗?
// Retrieve query variable and pass through regular expression.
// Test for unacceptable characters such as quotes, percent signs, etc.
// Trim out whitespace. If ereg expression not passed, produce warning.
$search = @$_GET['q'];
// check if wrapped in quotes
if ( preg_match( '/^(["\']).*\1$/m', $search ) === 1 ) {
$boolean = FALSE;
}
if ( escape_data($search) ) {
//trim whitespace and additional disallowed characters from the stored variable
$trimmed = str_replace("\"","'",trim($search));
$trimmed = stripslashes(str_ireplace("'","", $trimmed));
$prehighlight = stripslashes($trimmed);
$prehighlight = str_ireplace("\"", "", $prehighlight);
$append = stripslashes(urlencode($trimmed));
} else {
$trimmed = "";
$testquery = FALSE;
}
$display = stripslashes($trimmed);
答案 0 :(得分:0)
您已经自己说过,只需使用数组作为str_repace的参数:
http://php.net/manual/en/function.str-replace.php
$trimmed = str_replace( array("\"", "*"), array("'", ""), trim($search) );
第一个数组中的每个元素都将被第二个数组中的cioresponding元素替换。
<小时/> 对于将来的验证和卫生,您可能也想了解此功能:
答案 1 :(得分:0)
使用$search=mysql_real_escape_string($search);
它会删除$search
中可能影响您查询的所有字符。