Перейти к содержимому

Реферальная программа Мегаплана

Партнерская программа Kredov

Проблемы при склейке url из name/value hidden-полей

#1 web-rabbit

web-rabbit
  • Пользователь
  • 59 сообщений
  • Репутация: 0
0

Отправлено 23 Май 2010 - 11:46

Для реализации авторизации роботом нужно:
1. вырезать из страницы name и value hidden-полей,
2. добавить значение $login и $password
3. склеить url для http-запроса

Вот код:
// вырезаем из html-страницы name и value у hidden-полей
if (preg_match_all('/<input.+>/U', $content, $matches, PREG_PATTERN_ORDER)) {
$inputs = $matches[0];
foreach ($inputs as $input) {
if (preg_match_all('/(value|type|name)="(.*?)"/', $input, $matches, PREG_PATTERN_ORDER)) {
$attribs = array_combine($matches[1], $matches[2]);
if (isset($attribs['type']) && $attribs['type'] == 'hidden') {
// echo $attribs['name'] . ' = ' . $attribs['value']?><br/><?php
$param[$attribs['name']]=$attribs['value'];
}
}
}
}
// клеим урл
echo http_build_query($param);


В чём трудности:
На странице есть хидден-поля с одинаковыми нэймами, но разными значениями..
для блока авторизации и регистрации.
Вот name=value этих 2х блоков:
1. авторизации:

MfcISAPICommand = SignInWelcome
bhid = DEF_CI
UsingSSL = 1
inputversion = 2
lse = false
lsv =
..

2. регистрации:

MfcISAPICommand = RegisterEnterInfo
co_partnerId = 2
siteid = 0
..

как отсечь один блок хидден-полей от другого?

ато наглый http_build_query($param) берёт первый нэйм из блока авторизации, а значение к нему приравнивает из блока регистрации. Получается:

MfcISAPICommand=RegisterEnterInfo&bhid=DEF_CI&UsingSSL=1..

Подскажите, пожалуйста, как решить проблему неправильной склейки урла.

 

 

  • 0

#2 Joker-jar

Joker-jar
  • Пользователь
  • 3 сообщений
  • Репутация: 0

Отправлено 23 Май 2010 - 16:28

Думаю, нужно сначала отыскивать форму <form> авторизации, по submit, по id или еще как. А потом уже содержимое формы разбирать
  • 0

#3 gaaarfild

gaaarfild
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 23 Май 2010 - 21:58

При первом совпадении задать переменную. А при повторном, если присвоена, не считывать.
  • 0

#4 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 24 Май 2010 - 21:53

web-rabbit, Joker-jar правильно говорит, тогда проблема отпадет.
Раз там де формы разных, то нужно определиться с формой, если не получается, то парсить по более сложному правилу.
  • 0


Оформление форума – IPBSkins.ru