在PHP搜索中禁止*

时间:2014-08-04 12:20:14

标签: php

我想禁止用户输入(例如)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);

2 个答案:

答案 0 :(得分:0)

您已经自己说过,只需使用数组作为str_repace的参数:

http://php.net/manual/en/function.str-replace.php

$trimmed = str_replace( array("\"", "*"), array("'", ""), trim($search) );

第一个数组中的每个元素都将被第二个数组中的cioresponding元素替换。

<小时/> 对于将来的验证和卫生,您可能也想了解此功能:

http://php.net/manual/en/function.filter-var.php

答案 1 :(得分:0)

使用$search=mysql_real_escape_string($search);它会删除$search中可能影响您查询的所有字符。