Сохранение номера формы

kyvour

Активный пользователь
Регистрация
17.05.2014
Сообщения
186
Благодарностей
36
Баллы
28
Вобщем-то предложение следущее. Добавить возможность сохранять номер формы с редактора действий в переменную, чтобы потом использавать этот номер в действиях с элементоами. Часто бывает, что формы разные (отличаются именем или id), но элементы на них есть одинаковые. Поэтому удобно было бы сохранить номер нужной формы и уже работать с полями именно в ней
 
  • Спасибо
Реакции: KirillOFF

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Если номер формы всегда одинаковый, используйте его, если нет, ваше предложение не добавляет никакой универсальности.
 

CSS

Client
Регистрация
22.05.2010
Сообщения
1 327
Благодарностей
663
Баллы
113
ТС хочет шаманить в рамках одной формы, так как в варианте "-1" будет большой разброс, ТС видит решение задачи таким образом:
- Определяем признак, по которому точно ясно что нам нужна именно эта форма
- Ищем нужный элемент по этому признаку
- Определяем в какой форме находится наш элемент относительно других форм
- Сохраняем порядковый номер нашей формы

Далее получается таким образом ТС имеет возможность уже подставлять ранее найденный порядковый номер формы, и долбить уже в рамках конкретной формы, а не всей страницы (-1).

Лично я много раз сталкивался с необходимостью такой фичи, также как и фичи вложенной работы с формами (нашли один элемент, далее ищем в нём, далее вглубь ниже), и считаю что данная фича весьма полезна. Использование этой фичи могло бы выглядеть так:
- Ищем как и сейчас нужный эллемент
- Делаем GET|form_num
- Также думаю нужен вариант form_doc для получения порядкового номера документа в котором форма находится
 
  • Спасибо
Реакции: bigcajones

bigcajones

Client
Регистрация
09.02.2011
Сообщения
1 216
Благодарностей
683
Баллы
113
Я надеюсь, что это переводится также с англ. Я использовать регулярное выражение, чтобы взять все формы на странице и поставить в список.

Код:
(?<=method="post")[\w\W]*?(?=</form>)|(?<=method="POST">)[\w\W]*(?=</form>)|(?<=<form\ name=.*method="POST")[\w\W]*?(?=</form>)|(?<=<form\ name=.*method="post")[\w\W]*?(?=</form>)
Затем я иду по списку и удалять те формы, которые вы не хотели бы, как Facebook, как кнопки, формы входа, или подписаться формы с регулярным выражением.

Код:
"pluginButtonLabel">Like.*|value="Login"|"lang_dropdown_wrap"|Join Now|name="formulaire"|aweber\.com|icontact\.com|custom_aweber_ad_tracking|switchtheme|straight to your inbox|Get Instant Access|value="Download|We never send spam|Newsletter|id="thankyou_url"|OptimizePress/images/optbuttons/|Make payments with PayPal|Add To Cart|paypalobjects|name="inf_custom_OptInMethod|Give me FREE|value="Give me my|value="Sign Up"|name="Contact0FirstName"|contactsave|value="Get Instant Access"|id="search-block-form"|value="LOG IN"|action="/plugins/like/connect"|value="INSTANT ACCESS"|<input\ value="Search"\ type="submit">.*|http://www\.aweber\.com/scripts/addlead\.pl".*|id="user-login.*|loginform.*|Sign\ in.*|Sign\ up.*|subscribe_form.*|pro-login.*|addmember\.php|commentform.*|comment-form.*|feedburner\.google.*|form-login.*|"search"|"Search"|facebook\.com|Join now|FREE|value="search"|Register for this site|facebook\.com|getresponse\.com|name="subscribe"|listname|www\.eharmony\.com|name="signup"|MailPressFormEmail|clickbank.net|wp-login.php|id="GRSubscribeForm"|Password:|subscriberProfile|name="successUrl"|You can unsubscribe at any|newsletter-signup|google_appliance_search_form|name="double_optin"|Sign Up For Email|signInForm|plugins/like/connect|squeezepage|"lang_dropdown_wrap"|Opt-In|1shoppingcart|id="SignUp"|value="INSTANT ACCESS"|Get Started Now|free video|searchsubmit|Gracias\.htm|value="Lead_Web_Form"|input name="ARThankyouURL"|SubscribeForm|infusionsoft\.com/app/form|sign_up|leadPagesIsValid|Add to Cart|poll|We NEVER trade|id="rememberme"|PAYMENT|Payment| information will never be shared|value="register"|Search|Friends|download|awf_field|Get Instant Access|Subscribe
Если я получаю такую форму, которая не является матч плохой, я поставил Innerhtml тега тела в форму и заполнить его дюйма Таким образом, вы только иметь одну форму на странице и так как вы находитесь на домене, любая представить кнопка будет работать.
 
  • Спасибо
Реакции: kyvour, Lexicon и rostonix

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Ах ты Клинт, ах ты хитрец :-)
Вполне рабочий вариант )
 
  • Спасибо
Реакции: bigcajones

bigcajones

Client
Регистрация
09.02.2011
Сообщения
1 216
Благодарностей
683
Баллы
113
Зачем делать жизнь трудно. Как только вы поймете, что вы можете управлять веб-страницы он откроет свой мир для всех возможностей.
 
  • Спасибо
Реакции: Lexicon и rostonix

kyvour

Активный пользователь
Регистрация
17.05.2014
Сообщения
186
Благодарностей
36
Баллы
28
Ну, смотря что считать трудным:-) Как по мне, то проще найти форму, скажем, по id и сохранить ее номер в переменную, чем делать пост запрос, потом перебирать список со всеми формами...
 

bigcajones

Client
Регистрация
09.02.2011
Сообщения
1 216
Благодарностей
683
Баллы
113
True, if you are doing Post
 

kyvour

Активный пользователь
Регистрация
17.05.2014
Сообщения
186
Благодарностей
36
Баллы
28
Если номер формы всегда одинаковый, используйте его, если нет, ваше предложение не добавляет никакой универсальности.
Наведу конкретный пример. Делаю регистрацию на одном движке. Перехожу на страницу на которой есть 2 формы - для авторизации и для регистрации. Мне нужно заполнять поля только во второй. Все бы ничего, но бывают обязательные поля, которые идентичны полям на форме авторизации (логин и пароль). Выходит что эти поля надо заполнять в обеих формах (так как мы не знаем конкретно номер формы регистрации), если форм 3 - то и на 3-х формах, чтобы точно быть уверенным, что заполнятся поля у форме регистрации. В результате нарастает штук 5 блоков с логином и штук 5 с паролем.
Если же мы сможем сохранять номер формы в переменную, то всё становится намного проще. Ищем форму по id, сохраняем в переменную и потом используем ее при заполнении полей.
 

kyvour

Активный пользователь
Регистрация
17.05.2014
Сообщения
186
Благодарностей
36
Баллы
28

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
выше вам Клинт написал трюк, чем не подходит?
 

kyvour

Активный пользователь
Регистрация
17.05.2014
Сообщения
186
Благодарностей
36
Баллы
28
Трюк подходит:-) Но хотелось бы удобства. Мне сейчас проще накидать лишних блоков, выпарсивать все формы. Хотя это может быть дело времени - нужно 1 раз сесть и написать.
В любом случае фича полезная была бы.
 

kyvour

Активный пользователь
Регистрация
17.05.2014
Сообщения
186
Благодарностей
36
Баллы
28
Я надеюсь, что это переводится также с англ. Я использовать регулярное выражение, чтобы взять все формы на странице и поставить в список.

Код:
(?<=method="post")[\w\W]*?(?=</form>)|(?<=method="POST">)[\w\W]*(?=</form>)|(?<=<form\ name=.*method="POST")[\w\W]*?(?=</form>)|(?<=<form\ name=.*method="post")[\w\W]*?(?=</form>)
Затем я иду по списку и удалять те формы, которые вы не хотели бы, как Facebook, как кнопки, формы входа, или подписаться формы с регулярным выражением.

Код:
"pluginButtonLabel">Like.*|value="Login"|"lang_dropdown_wrap"|Join Now|name="formulaire"|aweber\.com|icontact\.com|custom_aweber_ad_tracking|switchtheme|straight to your inbox|Get Instant Access|value="Download|We never send spam|Newsletter|id="thankyou_url"|OptimizePress/images/optbuttons/|Make payments with PayPal|Add To Cart|paypalobjects|name="inf_custom_OptInMethod|Give me FREE|value="Give me my|value="Sign Up"|name="Contact0FirstName"|contactsave|value="Get Instant Access"|id="search-block-form"|value="LOG IN"|action="/plugins/like/connect"|value="INSTANT ACCESS"|<input\ value="Search"\ type="submit">.*|http://www\.aweber\.com/scripts/addlead\.pl".*|id="user-login.*|loginform.*|Sign\ in.*|Sign\ up.*|subscribe_form.*|pro-login.*|addmember\.php|commentform.*|comment-form.*|feedburner\.google.*|form-login.*|"search"|"Search"|facebook\.com|Join now|FREE|value="search"|Register for this site|facebook\.com|getresponse\.com|name="subscribe"|listname|www\.eharmony\.com|name="signup"|MailPressFormEmail|clickbank.net|wp-login.php|id="GRSubscribeForm"|Password:|subscriberProfile|name="successUrl"|You can unsubscribe at any|newsletter-signup|google_appliance_search_form|name="double_optin"|Sign Up For Email|signInForm|plugins/like/connect|squeezepage|"lang_dropdown_wrap"|Opt-In|1shoppingcart|id="SignUp"|value="INSTANT ACCESS"|Get Started Now|free video|searchsubmit|Gracias\.htm|value="Lead_Web_Form"|input name="ARThankyouURL"|SubscribeForm|infusionsoft\.com/app/form|sign_up|leadPagesIsValid|Add to Cart|poll|We NEVER trade|id="rememberme"|PAYMENT|Payment| information will never be shared|value="register"|Search|Friends|download|awf_field|Get Instant Access|Subscribe
Если я получаю такую форму, которая не является матч плохой, я поставил Innerhtml тега тела в форму и заполнить его дюйма Таким образом, вы только иметь одну форму на странице и так как вы находитесь на домене, любая представить кнопка будет работать.
I'm tried your method and I want to say that it's excellent!! :bp:
I search my form with some id in a page source and then replace a page's body with html of this form

So, my regexp is the next
Код:
<form.*(form_auth|forum_auth)[\w\W]*?</form>
This is a simple regex, but I wrote it about one hour :D

P.S. Sorry for my bad English:ah:
 

bigcajones

Client
Регистрация
09.02.2011
Сообщения
1 216
Благодарностей
683
Баллы
113
Рад, что смог помочь
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)