2009-04-23 3 views
1

Этот вопрос предназначен для обсуждения личных мнений людей при работе с пользователем.Команды с пользовательским вводом

Эта часть проекта, над которым я работаю, обрабатывает ввод пользователя способом, подобным IRC-чату. Например, есть команды и многое другое, для общения, выполнения действий и т. Д.

Теперь у меня есть несколько вариантов выбора для синтаксического анализа этого ввода. Я мог бы работать с регулярными выражениями, я мог бы разобрать его напрямую (т. Е. Большой оператор switch со всеми поддерживаемыми командами, просто проверяя первое число символов в пользовательском вводе) или даже сходил с ума и добавлял в парсер, похожий на Flex/Bison. Еще один вариант, который я рассматривал, - это определение всех команд в XML-файле, чтобы отделить их от реализации кода.

Итак, каковы мысли сообщества?

+0

Этот сайт предназначен для поощрения хороших объективных ответов. Я подозреваю, что формулировка вашего вопроса для явного обсуждения личных мнений окажется плохой. Я бы предложил перефразировать его так: «Лучшая практика ввода пользователей - php» или что-то более конкретное и объективно измеримое. –

+0

Спасибо, я обновил его соответствующим образом. – espais

ответ

1

Я бы пошел с красивой смешанной сумкой из всех.

Очевидно, что вам придется санировать вход. Убедитесь, что там нет неприятного материала, в зависимости от того, где вход будет предотвращать SQL-инъекцию, XSS, CSRF и т. Д.

Но когда ваш вход чист, вы можете пойти с регулярным выражением, которое ловит те, и получает все необходимые субматрицы (параметры команды и т. д.), а затем имеет какой-то оператор диспетчера-переключателя или аналогичный.

Здесь действительно нет лучшей практики по обложке, кроме всегда всегда и вчетверо - всегда убедитесь, что пользовательский вход дезинфицирован. Помимо этого, пойдите с тем, что, по-видимому, подходит для вашего дела.

Очевидно, есть те, которые говорят, что если у вас есть проблемы, и вы думаете об использовании reg exps для решения указанной проблемы, у вас есть две проблемы, но они осторожно используются, они лучше всего когда-либо. Просто помните, что regexp-монстры могут очень быстро читать на очень скудную читаемость.

Смежные вопросы