Pergunta

Eu quero postar uma URL usando CURL e php.

Há uma grande forma na página web e eu não quero copiar manualmente todas as variáveis ??e colocá-lo em meu pedido POST.

Eu estou supondo que tem que haver uma maneira para serializar o formulário automaticamente (usando DOM ou algo assim) e depois é só mudar o que valoriza o que preciso.

Eu não poderia google meu jeito fora de um presente, então eu estava pensando que alguém iria ter a amabilidade de ajuda.

Assim, há de qualquer maneira para serializar automaticamente um formulário que está enterrado em um monte de conteúdo html eu apenas puxado de uma URL?

Obrigado por qualquer ajuda, Andrew

Foi útil?

Solução

$http = new HttpQueryString();
$http->set($_POST);

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$http->get());

Requer PECL pecl_http> = 0.22.0

Outras dicas

A sua não é para limpar para mim se você está perguntando como para obter o formulário no navegador para o servidor ou como colocar o formulário postado no pedido onda. De php, assumindo a forma postado mais, seria tão simples como:

curl_setopt ($ handle, CURLOPT_POSTFIELDS, $ _ POST);

embora nenhum dado é validado dessa forma.

Do lado da web, não tenho certeza por que você serializar o formulário usando o DOM / JavaScript, ao invés de apenas enviá-lo através de um post normal?

Não é certo que a questão realmente é, mas você quer querer fazer algo parecido com isto:

$fields_string = http_build_query($data_to_send);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$fields_string);

ou você precisa olhar para isto:

$html = file_get_html('http://www.thesite.com/thepage.html');
foreach($html->find('input') as $element) 
echo $element->name . '<br>';

Eu não entendo a pergunta. Parece que você quer tela-raspar um formulário, preenchê-lo e, em seguida, postá-lo de volta para a página que você tem que partir. Está certo?

Editar em resposta ao comentário: Eu recomendo raspando o CURL'd HTML com uma ferramenta como simples HTML DOM (que é o que eu uso para raspagem com PHP). A documentação para a sua biblioteca de escolha vai ajudar você a descobrir como identificar os campos do formulário. Depois disso, você vai querer enrolar página de ação do formulário, com o atributo CURL_POST_FIELDS conjunto para os valores que você deseja passar para a forma, urlencode()'d claro.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top