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

AnaStas

Well-Known Member
16.09.2008
52
0
#1
Добрый день. Понимаю, что вопрос простой, но меня что-то зацыклило. Вот не сложный код:
[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

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

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

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

AnaStas

Well-Known Member
16.09.2008
52
0
#3
Спасибо за консультацию. 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

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