Pergunta

Eu tenho uma página com um botão de envio e eu gostaria php para analisar a página e clique no botão enviar e obter a resposta (que pode ser um link ou outra página html.)

Existe alguma maneira de clicar um botão de envio usando php?

Eu sei que há algo como HtmlUnit para java que permite pró-gramaticalmente preencher os campos do formulário e clique no botão enviar. Mas eu gostaria de fazer o mesmo em php.

Graças

Foi útil?

Solução

CURL lhe permitirá obter os resultados de um formulário de submissão

ex

$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);

Você também pode fazer a mesma coisa com as funções PHP Fluxo

ex

$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);
}

Em qualquer caso, $ conteúdo deve conter os resultados do formulário de inscrição

Outras dicas

Dê uma olhada selênio sistema de testes de aplicativos Web.

O SimpleTest biblioteca PHP também tem um rastreador página que pode analisar uma página HTML e gerar o pedido POST apropriado.

phpWebHacks parece promissor para a tarefa.

Características, como citado no site:

* 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.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top