Заполнение и отправка HTML-форм с помощью php без участия пользователя - PullRequest
0 голосов
/ 31 июля 2011

У меня есть следующая форма в файле с именем "foobar.html":

<!-- other stuff -->

<form method="post" action="foo.php?cat=1">
  <input type="text" name="bar" />
  <input type="submit" value="foobar" name="foobar" />
</form>

<!-- other stuff -->

И я открываю этот файл в php-скрипте с помощью fopen, как мне заполнить и отправить эту форму без каких-либовход от пользователя?Спасибо

Ответы [ 3 ]

1 голос
/ 31 июля 2011

Разобрать атрибут action с анализатором HTML и использовать curl, чтобы выполнить POST для соответствующего целевого URL.

0 голосов
/ 31 июля 2011

Пытаетесь ли вы, чтобы пользователь отправил форму в своем браузере без участия пользователя?Если это так, вам нужно прибегнуть к javascript, что-то вроде:

<body onLoad="document.getElementById('autoSubmit').submit();">
    <form id="autoSubmit">
    (insert form here) 
    </form>
</body>

Это автоматически отправит форму.Некоторые примечания: не у всех включен JavaScript, поэтому вы можете изменить входные данные на type="hidden", а также добавить хорошую большую кнопку отправки с надписью Click Here.

0 голосов
/ 31 июля 2011

Читайте весь огонь в переменную. Вместо того, чтобы использовать fopen, вы можете рассмотреть file_get_contents для этого, это немного чище.

Затем вы захотите проанализировать эту строку как HTML. Вы можете использовать PHP DOMDocument для этого. Получите действие и метод формы, пройдя дерево DOM к тегу формы и считав эти атрибуты. Затем получите имена любых входных данных в тегах формы. Используйте эти имена для генерации строки запроса с вашими парами ключ = значение. Если метод формы - GET, добавьте эту строку запроса к действию формы, в противном случае сохраните ее в другой переменной.

Наконец, используйте CURL , чтобы «отправить» форму. То есть используйте действие формы в качестве URL для запроса CURL. Если метод формы был GET, вы уже должны были добавить данные к URL-адресу, если метод был POST, вам нужно установить данные для запроса CURL в строку запроса данных, сгенерированную из имен формы.

Если ваш вопрос распространяется на то, как узнать, какие данные заполнять поля формы, это практически невозможно решить. Конечно, есть некоторые входные имена, которые вы можете найти и угадать требуемые данные, но универсальное решение - это невозможная проблема.

...