нажав на кнопку отправить, используя php - PullRequest
0 голосов
/ 06 января 2010

У меня есть веб-страница с кнопкой отправки, и я хотел бы, чтобы php проанализировал веб-страницу и нажал кнопку отправки и получил ответ (это может быть ссылка или другая HTML-страница.)

Можно ли нажать кнопку отправки с помощью php?

Я знаю, что есть что-то вроде htmlunit для java, которое позволяет программно заполнять поля формы и нажимать кнопку отправки. Но я хотел бы сделать то же самое в php.

Спасибо

Ответы [ 4 ]

1 голос
/ 06 января 2010

Взгляните на Selenium Система тестирования веб-приложений.

0 голосов
/ 06 января 2010

CURL позволит вам получить результаты отправки формы

например

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $urlOfFormSubmission);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, array(

        "field1"=>"data1",
        "field2"=>"data2"

    ));

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$contents = curl_exec($ch);

Вы также можете сделать то же самое с функциями потока PHP

например

$params = array('http' => array(
          'method' => "post",
          'content' => array("field1"=>"data1", "field2"=>"data2")
       ));

$ctx = stream_context_create($params);

$fp = @fopen($urlOfFormSubmission, 'rb', false, $ctx);

if (!$fp)
{
    throw new Error("Problem with ".$urlOfFormSubmission);
}

$contents = @stream_get_contents($fp);

if ($contents === false)
{
    throw new Error("Problem reading data from ".$urlOfFormSubmission);
}

В любом случае $ content должен содержать результаты отправки формы

0 голосов
/ 06 января 2010

phpWebHacks выглядит многообещающе для этой задачи.

Функции, указанные на сайте:

* Support HTTP/1.1
* Fetch web pages.
* Submit forms and upload files.
* Support https.
* Support HTTP cookies.
* Support HTTP redirects and Meta-refresh redirects.
* Support HTTP Authentication.
* Support proxy server.
* Support gzip encoding.
* Logging of HTTP streams for full debugging.
* Parsing HTML forms.
* Custom User-Agent.
0 голосов
/ 06 января 2010

PHP-библиотека SimpleTest также имеет сканер страниц, который может анализировать HTML-страницу и генерировать соответствующий запрос POST.

...