سؤال

لدي صفحة ويب مع زر إرسال وأريد PHP بتحليل صفحة الويب وانقر فوق الزر "إرسال" والحصول على الاستجابة (يمكن أن يكون رابطا أو صفحة HTML أخرى.)

هل هناك أي طريقة للنقر فوق زر إرسال باستخدام PHP؟

أعلم أن هناك شيء مثل HTMLUNIT ل Java يسمح لأحد بملء حقول النموذج بشكل مؤيد وانقر فوق الزر "إرسال". ولكن أود أن أفعل نفس الشيء في PHP.

شكرًا

هل كانت مفيدة؟

المحلول

سوف تتيح لك حليقة الحصول على نتائج تقديم النموذج

على سبيل المثال

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

في كلتا الحالتين، يجب أن تحتوي محتويات $ على نتائج تقديم النموذج

نصائح أخرى

إلقاء نظرة على السيلينيوم نظام اختبار تطبيقات الويب.

ال simpletest. تحتوي مكتبة PHP أيضا على صفحة زاحف يمكنها تحليل صفحة HTML وتوليد طلب المشاركة المناسب.

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.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top