Прямо сейчас я пытаюсь проверить некоторые постданные с помощью filter_var (). Я хочу получить фильтр, связанный с каждым входом из моей базы данных. Таким образом, если входные данные должны быть отфильтрованы по EMAIL, переменная будет содержать FILTER_VALIDATE_EMAIL. Это тогда будет передано так:
foreach($this->postdata as $key => $input){
if(!((empty($requirements[$key][1])) || $requirements == 'allowed')){
if(filter_var($input, $requirements[$key][1]) === false){
$errors = true;
}
}
}
$ Postdata выглядит так:
array (size=4)
'personer_navn' =>
array (size=1)
0 => int 0
'personer_alder' =>
array (size=1)
0 => int 1
'personer_kon' =>
array (size=2)
0 => int 2
1 => int 3
'personer_by' =>
array (size=1)
0 => int 4
И требования $ выглядят так:
array (size=4)
'personer_navn' =>
array (size=4)
0 => string 'string' (length=6)
1 => string 'FILTER_VALIDATE_EMAIL' (length=21)
2 => string '' (length=0)
3 => string '' (length=0)
'personer_alder' =>
array (size=4)
0 => string 'int' (length=3)
1 => string 'FILTER_VALIDATE_EMAIL' (length=21)
2 => string '' (length=0)
3 => string '' (length=0)
'personer_kon' =>
array (size=4)
0 => string 'allowed' (length=7)
1 => string 'allowed' (length=7)
2 => string 'allowed' (length=7)
3 => string 'allowed' (length=7)
'personer_by' =>
array (size=4)
0 => string 'string' (length=6)
1 => string 'FILTER_VALIDATE_EMAIL' (length=21)
2 => string '' (length=0)
3 => string '' (length=0)
Опять проблема, кажется, проходит мимо $requirements[$key][1]
к функции filter_var ().
Любая помощь приветствуется.
Простое изменение, которое исправит ошибку
foreach($this->postdata as $key => $input){
if(!((empty($requirements[$key][1])) || $requirements == 'allowed')){
if(filter_var($input, constant( $requirements[$key][1]) ) === false){
$errors = true;
}
}
}
constant
функция возвращает (integer
) значение фильтра, который является строкой.
прочитайте ответ P.P-s тоже.
FILTER_VALIDATE_EMAIL не должен использоваться в качестве строки. Попробуйте использовать его без кавычек. Примеры можно найти в документация