我一直试图匹配帖子查询sting,如果它包含数组中的任何单词。 我尝试使用命令执行sql查询来更新或选择,但我不想删除或删除行和表。
请注意以下代码与数组中的sting不匹配
<?php
if(isset($_POST['QueryCode'])){
$RequestQuey = htmlspecialchars($_POST['QueryCode']);
$sqlchecker = strtolower($RequestQuey);
$bads_arrays = array(
'ALTER',
'TABLE',
'DROP');
foreach ($bads_arrays as $strings){
if (strpos($sqlchecker , $strings) !== false) {
echo "Match found";
return false;
}else{
echo "Not found!";
return true;
}
}
?>
答案 0 :(得分:1)
您正在对检查过的字符串执行strtolower(),但您在数组中有大写单词。因此要么将strpos替换为stripos,要么将数组中的单词更改为小写,或将检查的字符串($ sqlchecker)转换为大写。
$anyMatched = false;
foreach ($bads_arrays as $strings){
if (stripos($sqlchecker , $strings) !== false) {
$anyMatched = true;
}
}
echo ($anyMatched ? 'Match found' : 'Not Found');
return $anyMatched;