При проверке логического FALSE
в php вам необходимо использовать оператор ===
.В противном случае, когда совпадение строки будет найдено в позиции индекса 0
строки, ваше условие if
будет неправильно оценено как true
.Это явно упоминается в большом красном поле в документах php для strpos()
.
Кроме того, на основании комментария, оставленного вами под другим ответом, кажется, что вам нужно удалитьexit
оператор из блока, который разрешает доступ.
Собирая все это вместе, я думаю, ваш код должен выглядеть следующим образом:
while (list($key, $val) = each($keyword)) {
$pos = strpos($location, $val);
if($pos === false) { // use === instead of ==
echo "allow";
} else {
echo "deny";
exit;
}
}
Обновление:
Сновую информацию, которую вы предоставили, я переписал логику:
function isAllowed($location) {
$keywords = array('blah', 'another-restricted-word', 'yet-another-restricted-word');
foreach($keywords as $keyword) {
if (strpos($location, $keyword) !== FALSE) {
return false;
}
}
return true;
}
$location = 'http://blah.com/';
echo isAllowed($location) ? 'allow' : 'deny';