проверяющая радиогруппа с помощью perl / cgi - PullRequest
0 голосов
/ 09 марта 2010

Можно ли проверить группу радиосвязи (чтобы что-то было отмечено или выбрано), используя проверку на стороне сервера с помощью Perl? Если так, то как?

У меня уже есть его для JavaScript, но я хочу, чтобы эту форму можно было отправлять даже без включенного JavaScript. Поэтому мне потребуется проверка на стороне сервера.

Не существует фиксированного имени для радиогруппы, оно может меняться, однако должно быть имя, чтобы @names = $cgi->param() давало все имена.

Я подумываю над тем, что даст мне тип, например, тип в JavaScript, чтобы определить, является ли он переключателем в группе.

Ответы [ 2 ]

4 голосов
/ 09 марта 2010

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

Ваш CGI-скрипт должен знать имена входных переменных, значения которых он будет проверять. Имена, передаваемые в сценарий на основе ненадежного пользовательского ввода, сопряжены с риском, IMHO - это включает использование другого поля, значением которого является имя группы радиосвязи.

Скажем, у вас есть переменная с именем contact_me, которая может принимать значения "yes" и "no". У вашего скрипта CGI нет абсолютно никаких оснований для беспокойства, если значение было предоставлено с помощью

<select name="contact_me">
<option value="yes" selected="1">Please do!</option>
<option value="no">Oh no!!!</option>
</select>

или используя

<input type="radio" name="contact_me" value="yes" checked="1">
<input type="radio" name="contact_me" value="no">

или если пользователь набрал ее ответ в текстовом поле

<input name="contact_me">

Единственное, о чем должен заботиться ваш CGI-скрипт, это если значение contact_me равно "yes" или "no".

Похоже, у вас нет четкого представления о CGI. См. FAQ по всемирной паутине безопасности: CGI (серверные) сценарии в качестве отправной точки.

Пожалуйста, остановите все вашего CGI-разработки, пока вы не поймете последствия. Я отказываюсь от этого замечания в свете ваших комментариев, разъясняющих использование файла конфигурации для определения имен параметров (что в принципе на порядки безопаснее).

1 голос
/ 09 марта 2010

Передайте другое скрытое поле ввода, содержащее название радиогруппы, затем просто прочитайте

@values = $cgi->param($cgi->param("radiogroup_name")); // IIRC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...