Я часто использую следующие строки для упрощения обработки ввода формы.
foreach($_POST as $key => $value){
$$key = $value;
}
Это действительно удобно, потому что вам нужны только строки, и вы получаете все, что вы представляли как переменные, но каждый раз, когда я использую это, я думаю, что что-то упускаю. Есть небольшая опасность, если случайно назвать несколько переменных одинаковыми, но меня больше беспокоит безопасность. Есть ли какой-то способ, чтобы это было уязвимостью в этом отношении? то есть пользователь фабрикует какую-то форму ввода со злонамеренным именем?
Прежде всего, вы можете сделать это с extract
, цикл не требуется:
extract($_POST);
Что касается безопасности, конечно, есть проблемы безопасности каждый раз, когда вы используете данные, предоставленные пользователем. Вы хотите дезинфицировать любой пользовательский ввод. Это верно независимо от того, extract
вход в локальные переменные или просто использовать $_POST
массив.
Некоторые утверждают, что при извлечении в локальные переменные легче забыть о дезинфекции, поскольку позже в вашем коде неясно, какие переменные передаются пользователем.
Перенос пользовательских данных в локальные переменные упрощает перезапись предварительно существующей локальной переменной, которую вы настроили (если вы не используете EXTR_SKIP
флаг).
Я бы посоветовал против практики.
Других решений пока нет …