Возможно ли эмулировать отправку формы с помощью PHP? - PullRequest
0 голосов
/ 09 июня 2010

Используя PHP, вы можете создать отправку псевдо-формы, даже не создавая форму?Просто инициализируйте и объявите переменные и они передадут их на другую страницу через методы POST или GET?

Ответы [ 5 ]

4 голосов
/ 09 июня 2010

Что вам нужно, так это cURL , библиотека для создания таких запросов.

0 голосов
/ 09 июня 2010

Я не уверен, что вы можете установить параметры POST, но до тех пор, пока GET приемлем, вы можете сделать это очень легко (я не достаточно опытен, чтобы разобраться с этим без тестирования и не обещать ошибок, так чтодля проверки):

$url = "http://foo.com?"
while(list($key, $value) = each($_POST)
 $url .= "$key" . "=" . $value . "&";
header(Location: $url);

Это превратит ваш POST в GET.

0 голосов
/ 09 июня 2010

Вы можете попробовать сделать что-то вроде этого

$_POST = array(
                        'lname'=>urlencode($last_name),
                        'fname'=>urlencode($first_name),
                        'title'=>urlencode($title),
                        'company'=>urlencode($institution),
                        'age'=>urlencode($age),
                        'email'=>urlencode($email),
                        'phone'=>urlencode($phone)
                );

$_GET = array(); // no get
$_SERVER['REQUEST_METHOD'] = "POST";
$_SERVER['REQUEST_URI'] = '/anotherpage.php';
// set REQUEST_PATH, REQUEST_PATHINFO, REQUEST_SCRIPTNAME etc
// now it will be like this anotherpage.php was requested with a form
include("anotherpage.php");

Если вы хотите избежать cURL, но я не рекомендую это делать, потому что это быстро запутывается.

0 голосов
/ 09 июня 2010

Теоретически, вы можете генерировать внутренние запросы в Apache для отправки этой формы; на практике вам придется использовать PHP-потоковую оболочку http или curl, как и другие.

0 голосов
/ 09 июня 2010

Определенно. Вы можете сделать это с помощью cURL, эта ссылка должна объяснить основы: http://curl.haxx.se/docs/httpscripting.html - но в Интернете существуют сотни учебных пособий по cURL для подобных вещей.

Как только вы освоите cURL, его будет легко понять и использовать.

Вот пример кода:

<?
define('POSTURL', 'http://www.test.com/search.php');
 define('POSTVARS', 'listID=29&request=suba&SubscribeSubmit=Subscribe&EmailAddress=');// POST VARIABLES TO BE SENT

 $ch = curl_init(POSTURL);
 curl_setopt($ch, CURLOPT_POST      ,1);
 curl_setopt($ch, CURLOPT_POSTFIELDS    ,POSTVARS);
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION  ,1);
 curl_setopt($ch, CURLOPT_HEADER      ,0);  // DO NOT RETURN HTTP HEADERS
 curl_setopt($ch, CURLOPT_RETURNTRANSFER  ,1);  // RETURN THE CONTENTS OF THE CALL
 $data = curl_exec($ch);

?>

Нечто подобное должно работать.

...