Изменить: см. комментарий @VolkerK о том, что это не защищает от внедрения вредоносного кода.
Как сказал @Jay Blanchard, возможно, было бы лучше подумать о более подходящей структуре данных, такой как JSON. Однако, если вы хотите придерживаться этой структуры, вы можете использовать PHP is_array() (http://php.net/manual/en/function.is-array.php) для проверки того, что переменная является массивом, прежде чем пытаться передать этот массив каким-либо другим функциям.
Это только подтверждает, что у вас есть массив, а не то, что ваш массив имеет правильный формат. Чтобы сделать еще один шаг вперед, вы можете проверить правильность размера массива с помощью count() (http://php.net/manual/en/function.count.php), эти две вещи вместе гарантируют, что у вас есть массив с правильным количеством значений, хранящихся в массиве.
Проблема проверки того, находятся ли значения массива в правильном формате, — это другой зверь. Вы можете просмотреть все ключи и сравнить переданный ключ с массивом приемлемых ключей следующим образом:
function isValidArr($usrArr){
$apiParams = array('api_key', 'user', 'timeout');
for($i = 0; i < count($usrArr); $i++ {
if(!strcmp($usrArr[$i], $apiParams[$i])) {
return false;
}
}
}
А затем, чтобы проверить значения, связанные с каждым из ключей, я предполагаю, что ключ api_key имеет определенную длину или находится в пределах диапазона, поэтому вы можете проверить это. Для тайм-аута вы можете убедиться, что значение является целым числом. Чтобы проверить имя пользователя, вы можете реализовать регулярное выражение, чтобы гарантировать, что значение соответствует определенному формату.
person
Jonathan Harvey
schedule
20.01.2016
$array = include __DIR__ . '/path/to/array.php'; $isArray = is_array($array);
- если возвращаемый контент из другого файла представляет собой массив, он будет разрешаться какtrue
. Однако это действительно ничего не делает для проверки вредоносного кода, и я не вижу, как вы могли бы надежно смягчить это, поэтому я согласен с @JayBlanchard и @Adam - person Darragh Enright   schedule 21.01.2016json_decode($jsondata, true);
- теперь это массив php (или, да, скаляр, но это, вероятно, будет обработано как ошибка формата ввода). - person VolkerK   schedule 21.01.2016