• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Вопрос по очистке полей

  • Автор темы Gor
  • Дата начала
G

Gor

Делаю бланк тестирования под WEB.

Возникла проблема.
На форме с тестированием на WebQueryOpen вешаю формульку для очистки всех полей от прошлых результатов.

Код:
@SetField("Reason1";"");
@SetField("Reason1_1";"");

В результате Одно поле чистится и срабатывает поле InputValidation, а другое не чистится...
В Input Validation в полях проверка @If(@ThisValue="";@Failure(ValidationErrorMsg+"You doesn't fill all fields");@Success)

Валидация не срабатывает изза того что не срабатывает WebQueryOpen одинаково для всех полей.

Поле Reason1 текстовое editable обычное
Поле Reason1_1 Radio button editable

Вот как раз @SetField("Reason1_1";""); не отрабатывается... Почему???

Как привести поле radio button к значению "" на момент открытия формы в WEB???
 
G

Gor

Дело в том что проблема точно в виде поля...
Пробовал менять поле Radiobutton на Editable. И на это же самое поле с таким же именем только другого типа Input Validation отрабатывает(((
Что делать??? Как всё таки почистить Radiobutton при открытии заявки в WEB до значения "" ???
 
G

Gor

Может быть кто нибудь тогда подскажет как сделать провеку поля на пустоту на JS?
Может у кого нибудь примерчик есть какой нибудь?
 
A

Akupaka

не используй ты эти InputValidation, сделай проверку JS, а потом дополнительно LS-проверку, на случай, если JS обойдут...

по JS смотри циклы, метод document.getElementsByName()
алгоритм такой, радио-группа с именем поля Radio1 будет представлена набором html-элементов на странице, поэтому тебе нужно взять их все, и проверить, что какой-то отмечен - имеет свойство checked = true
а в LS просто берешь значение итема Radio1, и сравниваешь с нужным...
 
G

Gor

не используй ты эти InputValidation, сделай проверку JS, а потом дополнительно LS-проверку, на случай, если JS обойдут...

по JS смотри циклы, метод document.getElementsByName()
алгоритм такой, радио-группа с именем поля Radio1 будет представлена набором html-элементов на странице, поэтому тебе нужно взять их все, и проверить, что какой-то отмечен - имеет свойство checked = true
а в LS просто берешь значение итема Radio1, и сравниваешь с нужным...

Ок спасибо)
А вот эту проверку на JS script на каком событии делать???
На кнопке Submit??? Но у меня там же на формулах запуск агентов...Как сделать так чтобы сначала
поля проверить а потом агентов запустить Лотусовых типа @Do(@Command([ToolsRunMacro]; "(MegaFoodSubmitVote)");@Command([FileSave]);@Command([FileCloseWindow]))?
И не подскажете ещё какой нибудь ресурс где про JS под Лотус почитать можно??
 
G

Gor

Не пойму почему не получается проверка((

На OnClick поля радиобаттон повесил

// Радиобаттон выбран
function isValidRadio(UserInput_6) {
var valid = false;
for (var i = 0; i < UserInput_6.length; i++) {
if (UserInput_6.checked) {
return true;
}
}
alert("Выберете радиобаттон.");
return false;
}

По нажатию на кнопку Submit <input type="button" onclick="this.form.submit();" />
при неотмеченном поле ошибка не выходит ((( Почему?(
 
A

Akupaka

нету JS под нотес, во всяком случае, я нигде не нашел где описан JS работающий под нотесом, а на веб-страницах самый обычный JS, который работает в браузере! соотв, любую литературу можешь взять, их много, я сам пользуюсь MSDN, но он очень сильно заточен под IE...

для того, чтобы сделать проверки JS, то можно поступить разными способами, можно на сабмит, можно на кнопку, все зависит от того, как твой пользователь работает с документом!
например,
- на onSubmit можно прописать нужные проверки на JS, потом кликнуть по какой-то кнопке, которая уже запустит твой агент;
- можно поменять action для формы, и запустить нужный код, но это не самый удобный вариант, т.к. домино туда формирует нужный код, и его придется сохранять, чтобы потом выполнить, в общем, не самый удобный;
- если твой пользователь в конце работы с документом обязан нажать какую-то кнопку, то это не обязательно должна быть кнопка типа submit!, даешь ему другую кнопку, которая сначала выполняет проверки, потом либо кликает по кнопке, которая выполняет формулу, либо сама ж вызывает сабмит формы;

чтобы кодом кликнуть по кнопке нужно, чтобы была сама кнопка с указанным name и/или id, часто хорошо, если они одинаковые, т.е. на странице, в конце концов, должен появиться
Код:
<input type=button id="myButton1" value="clickMe" />
а код, который по ней кликает, может быть таким:
Код:
document.getElementById("myButton1").click();


------------------------------------------------------------------------------------------------------------------
потому что ты не вызов функции сделал, а объявил метод внутри функции обработчика...

повесь свою функцию в JS Header и запусти ее на обработчик onSubmit
 
G

Gor

Сделал следующим образом для полей типа text и radiobutton функция checkform

Код:
//var buttonClicked = '';
function checkform(form)
{
//	if (!(buttonClicked=='button')) return true;
if ( form.Reason1.value == '' ) { 
alert('Validation error: Please fill in "Вопрос1 field.');
form.Reason1.focus(); return false;
};
var IsChecked = false;
var TypeValue = '';
for (var i=0; i<form.UserInput_6.length; i++)
{
if (form.UserInput_6[i].checked) {IsChecked=true;TypeValue=form.UserInput_6[i].value;break}
}
if (!IsChecked) {alert('Вопрос 2 field.');return false};}

повесил на JS Header... и вызываю по кнопке
Код:
<input type="button" onclick="checkform(form);" />
работает))

Но чёто я всё равно не совсем понял как сейчас если ошибок не появилось запустить код @Do(@Command([ToolsRunMacro]; "(MegaFoodSubmitVote)");@Command([FileSave]);@Command([FileCloseWindow])) по этой же самой кнопке??
 
A

Akupaka

:blink:
сделай еще в JS Header функцию, например, MySubmit(), если твоя функция checkform возвращает true, если все хорошо, то можно ее такой сделать:

Код:
function MySubmit() {
if (checkform(document.forms[0]))
document.getElementById("nextAction").click();
};

где nextAction - кнопка форме, у которой id = "nextAction", а на этой кнопке свои собаки напиши

тогда, если проверка проходит удачно, то JS "кликнет" по нужной кнопке, и запустится собака...

надеюсь, понятно все :)
 
G

Gor

ну вроде понятно=)) только не работает)

мой jsHeader

Код:
function MySubmit() {
if (checkform(document.forms[0]))
document.getElementById("nextAction").click();
};

//var buttonClicked = '';
function checkform(form)
{
//	if (!(buttonClicked=='button')) return true;
if ( form.Reason1.value == '' ) { 
alert('Validation error: Please fill in "Вопрос1 field.');
form.Reason1.focus(); return false;
};
var IsChecked = false;
var TypeValue = '';
for (var i=0; i<form.UserInput_6.length; i++)
{
if (form.UserInput_6[i].checked) {IsChecked=true;TypeValue=form.UserInput_6[i].value;break}
}
if (!IsChecked) {alert('Вопрос 2 field.');return false};}

сделал кнопку обычную. В её закладке Html-> tag-> id = nextAction

И на картинке по событию Onclick -> MySubmit()

Проверки полей проходят, а вот агент не запускается)

@Do(@Command([ToolsRunMacro]; "(MegaFoodSubmitVote)");@Command([FileSave]);@Command([FileCloseWindow]))
 
A

Akupaka

а ты уверен, что твоя функция проверки возвращает true? :blink:
добавь в ее конец возврат true:

Код:
if (!IsChecked) {alert('Вопрос 2 field.');return false}; return true}
 
G

Gor

добавил :blink:
Теперь когда заполняешь все поля браузер ругается Error on page=)))

Может здесь чёто не так?

Код:
function MySubmit() {
if (checkform(document.forms[0]))
document.getElementById("nextAction").click();
};
 
A

Akupaka

ну, ты бы для примера привел текст ошибки, что ли :)

но, если он ругается на document.getElementById("nextAction"), значит у тебя нету в html'е элемента с таким айди, проверь исходники страницы, если такого элемента действительно нет, а кнопка есть, то значит она скрыта, а ее надо скрыть не от "страницы", а от юзеря, для этого нужно либо у нее прописать стиль display:hidden, либо поместить ее в какой-нить div с таким стилем...
 
G

Gor

но, если он ругается на document.getElementById("nextAction"), значит у тебя нету в html'е элемента с таким айди, проверь исходники страницы, если такого элемента действительно нет, а кнопка есть, то значит она скрыта, а ее надо скрыть не от "страницы", а от юзеря, для этого нужно либо у нее прописать стиль display:hidden, либо поместить ее в какой-нить div с таким стилем...

да, действительно не находил, изза того что кнопка скрыта была... как кнопку открыл всё отработало
вот и откуда узнать такие тонкости?))

прописал в кнопке в закладке html - > display:hidden почему то всё равно видна(
буду пытаться в div засунуть тогда
 
A

Akupaka

надо в раздел Html tags / Style прописывать

тонкости эти - практика
 
G

Gor

Код:
надо в раздел Html tags / Style прописывать
А где этот раздел находится?
 
A

Akupaka

шутник однако :)

раздел Html tags на последней закладке у свойств кнопки, а чуть ниже полей id, name и т.п., есть Style
 
G

Gor

конец дня наверно сказывается))
=)) ну я это и имел ввиду в моём сообщении выше -
прописал в кнопке в закладке html - > display:hidden почему то всё равно видна(

т.е. в кнопке то я уже прописал display:hidden а кнопка всё равно не скрывается
 
A

Akupaka

ану-ка скинь в студию html твоей видимой кнопки со страницы :)
 
G

Gor

Код:
<input type="button" value="nextAction" id="nextAction" style="display:hidden" onclick="return _doClick('C325742E0026962F.67d3ce88d2ec7980c325742e0026e8cf/$Body/0.8D52', this, null)"></td></tr>
:)
 
Мы в соцсетях:

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