2013-09-20 4 views
0

Я подав регистрационную форму с помощью:Перенаправление и последовательный POST запрос

$loginRequest = array(
         'Username' => 'myUsername' 
         'Password' => 'myPassword' 
); 
$request = new HTTP_Request2($url, HTTP_REQUEST2::METHOD_POST); 
$request->addPostParameter($loginRequest); 
$response = $request->send(); 

POST-успешна и выход $ response является

</body> 
<a id="refresh_url" href="/homepage">Loading...</a> 
</body> 

который (вход по крайней мере, когда вручную через Chrome) переадресовывает в другую форму с вводом

<FORM name="autologin" method=POST action="https://homepage/AccountSettings"> 
<input type="hidden" name="Z" value="0,0"> 

Я не уверен, как получить PH P программно обрабатывает refresh_url и перенаправляет на /homepage Также, как заставить PHP также отправить эту последнюю форму?

EDIT

Там также следующие мета-тег на странице промежуточного

<meta http-equiv="Refresh" content="0; URL=/vdesk/?langchar=en.iso-8859-1&amp;ui_translation=off&amp;gbrowsertype="> 
+0

@ Бармар Я только что проверил. Да, есть, и я обновил свой вопрос. –

ответ

0

Вы хотите сделать две вещи:

1) Вы хотите, чтобы перейти к следующей странице «» Вы можете сделать это, ища тег метаобработки и перейти к целевому URL. Вы можете получить URL-адрес из содержимого тега meta refresh с помощью простого регулярного выражения.

2) Вы хотите, чтобы следующая страница узнала, что вы вошли в систему. Если это обычный webapp, вам нужно проанализировать заголовки Set-Cookie:, которые входят в исходный запрос, и превратить их в Cookie: которые вы отправляете, когда вы запрашиваете следующую страницу.

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

Обратите внимание, что не каждый сайт будет обновлять метаданные после входа в систему - учетные данные для приложений HTTP в действительности не стандартизованы (поскольку заголовки веб-авторизации обычно не используются.) Если вы хотите сделать много с помощью куча разных сайтов, вам лучше надеяться, что на этих сайтах будут какие-то программные API-интерфейсы, вместо того чтобы прибегать к очистке веб-страницы HTTP.

+0

Как выглядит метод PHP для получения файлов ответов? Кроме того, я буду отправлять ВСЕ файлы cookie на следующую страницу? –

+0

Вы должны получить заголовки ответов из объекта $ response и посмотреть заголовок Set-Cookie. И, да, вы хотите отправить все файлы cookie на следующую страницу. Вы можете отправлять несколько файлов cookie в одном заголовке Cookie. Я настоятельно рекомендую прочитать спецификацию протокола HTTP для получения дополнительной информации: http://www.w3.org/Protocols/rfc2616/rfc2616.html Это действительно требуется для чтения для тех, кто занимается веб-разработкой. –

0

На самом деле вы не можете перенаправить, а затем POST.

См. Рисунок Post/Redirect/Get: вот как вы должны попытаться реализовать страницу входа.

+0

Он не выполняет страницу входа в систему, он пытается автоматизировать вход в страницу, и страница переадресовывается на страницу «профиль обновления» при входе в систему. – Barmar

+0

Извините, я неправильно понял вопрос ... кстати, не должно быть POST-формы после перенаправления. – Simone

+0

Он хочет отправить в ** новую ** форму, та, которая находится на странице, на которую он перенаправлен. – Barmar

0

Если вы захватив пост (имя пользователя/пароль), то вы бы нормально загрузить страницу с помощью PHP, как это:

header("Location: /homepage"); 

Но из вашего примера вы, кажется, путает на стороне клиента и на стороне сервера для обработки логина. Посмотрите простой код здесь: http://php.thedemosite.co.uk/logincode.php он должен помочь.

Смежные вопросы