• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Функции Cgi Param('argument')

  • Автор темы AnaStas
  • Дата начала
A

AnaStas

Добрый день. Понимаю, что вопрос простой, но меня что-то зацыклило. Вот не сложный код:
[codebox]...
if(param('fromJS')){
$server=param('fromJS');
if ($server=~/^cr\,.+$/i){&Create_Modes}
if ($server=~/^wr\,.+$/i){&mds_insert($server)}
}
else {
...
}
Скрытая HTML-форма[/codebox]
При первом обращении к серверу скрипт отправляет в браузер стандартный HTTP код и пустое значение поля "fromJS" скрытой формы, поэтому выбор сабрутин не происходит и через else имеем продолжение загрузки главной страницы.
Но вот пользователь создает события которые заполняют информацией поле fromJS и, соответственно, if выводит нас на выбор инициированной подпрограммы.
Но по завершению ее работы, казалось бы, чего проще установить значение функции param('fromJS') в false и главная страница вновь загружена... однако, что-то никак не получается сделать ее вновь "пустой" и обойти выбор сабрутин.
Подскажите, чего я тут недопонимаю.
 
V

Vovochka

Это я тут недопонимаю.
чего проще установить значение функции param('fromJS') в false и главная страница вновь загружена...
Это все во время одного и того же запроса? Если после обработки данных вам надо вывести опять гл. страницу, дак уберите else.

А если это разные запросы, дак вы гляньте, где повторно отправляется этот 'fromJS'. Вы форму точно не гетом отдаете?
Как-то же к вам приходит второй раз fromJS

А уж касательно обнуления param('fromJS'), это совершенно не нужно.
 
A

AnaStas

Спасибо за консультацию. else убрал, правда алгоритм немного видоизменился и стал:
Код:
........
my ($server)=param('fromJS'); # пришлось через elsif организовывать структуру выбора
if ($server eq ""){&All_Modes}
elsif ($server=~/^cr\,.+$/i){&Create_Modes}
elsif ($server=~/^wr\,.+$/i){&mds_insert($server)}
........
#== Скрытая форма для передачи данных на сервер =======
print "
<form name=\"TransData\" style=\"display:none\" method=\"post\">
<input type=\"text\" name=\"fromJS\">
</form>\n";
.......
Тему можно считать закрытой, только небольшой вопросик-ремарка:
Исходя из того, что у нас с Вами получилось следует-ли понимать работу функции param('string') так:
1. возвращаемое значение функции всегда true / false взависимости - определен аргумент или нет и оператор условия будет иметь вид if (param('string');
2. но когда аргумент определен возвращаемым значением всегда будет true, если if (param('string'), или true / false взависимости от расформатированного значения string если if ((param('string') <оператор сравнения> <значение выбранное из string или "">).
Все-ли здесь корректно в таком понимании функции param('string')?
P.S.
Главный "посоветовал" не плодить страницы, а, по возможности, сосредоточиться на одном документе, отсюда такой код.
 
V

Vovochka

Главный "посоветовал" не плодить страницы, а, по возможности, сосредоточиться на одном документе, отсюда такой код.
Плодите страницы. И отделяйте HTML от кода.
1. возвращаемое значение функции всегда true / false взависимости - определен аргумент или нет и оператор условия будет иметь вид if (param('string');
2. но когда аргумент определен возвращаемым значением всегда будет true, если if (param('string'), или true / false взависимости от расформатированного значения string если if ((param('string') <оператор сравнения> <значение выбранное из string или "">).
Все-ли здесь корректно в таком понимании функции param('string')?
Ничего не понял... Какие true/false... и все.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!