Поиск

Вопросы и ответы

Моя форма не работает, я получаю сообщение об ошибке.

Для локализации проблемы воспользуйтесь руководством по отладке CGI, приведенном на 17-м занятии, "Введение в CGI". Отладка программы, обрабатывающей форму, не отличается от отладки обычной CGI-программы.

Я нашел в Internet прекрасную программу, но не могу понять, почему для получения параметров формы она использует переменную $ENV(QUERY_STRING)?

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

Я запускаю программу с ключом -Т в строке #!, при этом появляется сообщение об ошибке Too late for -т option и программа прекращает выполнение. Почему?

Ключ -Т должен стать известен интерпретатору как можно раньше, чтобы Perl сразу мог начать процесс контроля данных. Иногда бывает, что к тому моменту, когда выполнение дойдет до строки программы #!, интерпретатор уже обработал параметры командной строки. Поэтому для запуска программы из командной строки, например во время отладки, необходимо в командной строке также указать ключ -Т:

perl -Т -d foo.cgi

Может ли контроль данных в Perl уберечь программиста от совершения нелепых ошибок в CGI-программе? Гарантированд ли теперь безопасность программы?

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