al hacer clic en botón de enviar utilizando php
-
19-09-2019 - |
Pregunta
Tengo una página web con un botón de enviar y me gustaría php para analizar la página web y haga clic en el botón de enviar y obtener la respuesta (que puede ser un enlace u otra página HTML.)
¿Hay alguna manera para hacer clic en un botón de envío utilizando php?
Sé que hay algo así como HtmlUnit para Java que le permite a uno pro-gramaticalmente llenar los campos del formulario y haga clic en el botón enviar. Pero me gustaría hacer lo mismo en php.
Gracias
Solución
CURL le permitirá obtener los resultados de un envío de formularios
por ejemplo
$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);
También puede hacer lo mismo con las funciones PHP Stream
por ejemplo
$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);
}
En cualquier caso, $ contenido debe contener los resultados de la sumisión de la forma
Otros consejos
Tome un vistazo a selenio sistema de pruebas de aplicaciones Web.
phpWebHacks parece prometedor para la tarea.
Características, citado en el sitio web:
* 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.