2009-10-29 5 views
1

У меня есть форма отправки с методом POST, я хочу написать скрипт, который может автоматически отправить эту форму, поэтому мне нужно это для тестирования. Мне нужно много данных за короткое время, чтобы протестировать поиск на основе этих полей формы, и у меня нет времени, чтобы это сделать вручную. Это возможно?Отправка формы с использованием PHP

ответ

5

Вы можете использовать завиток для имитации формы submit.

// create a new cURL resource 
$ch = curl_init(); 

// set URL and other appropriate options 
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/script.php"); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_POST, true); //enable POST method 

// prepare POST data 
$post_data = array('name1' => 'value1', 'name2' => 'value2', 'name3' => 'value3'); 

// pass the POST data 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); 

// grab URL and pass it to the browser 
curl_exec($ch); 

// close cURL resource, and free up system resources 
curl_close($ch); 

Источник: http://php.net/manual/en/book.curl.php

+0

Вы установили curl_setopt ($ ch, CURLOPT_POST, true); дважды. – luiscubal

0

Пусть PHP заполняет форму данными и распечатывает Javascript, который публикует форму, PHP не может публиковать ее на своем собственном.

+0

Почему голос? Он явно запрашивает скрипт для _post form_, который PHP не может выполнить. –

+1

Любое замедление, вероятно, связано с тем, что вы сказали, что PHP не может делать то, что спрашивал пользователь, но в нем есть библиотеки, которые могут выполнять то, что было задано, как указывали другие ответы. Я предлагаю, чтобы, если вы не хотите downvotes, измените свой ответ так или иначе. – PTBNL

+0

Ну, нет. Мне все равно, если я получаю downvotes, если я ошибаюсь, но то, что делают PHP-библиотеки (например, Snoopy), - это просто отправлять данные с POST в указанный PHP-документ. Это не то же самое, что размещать форму ... Как я понял, его первоначальный вопрос заключался в том, чтобы отправить HTML-форму, а не просто отправлять данные на страницу. –

0

Вы можете использовать php.net/curl для отправки запросов POST с помощью PHP.

2

, если вы не удобно использовать локон, вы можете использовать библиотеку PHP называется snoopy, которая имитирует веб-браузер. Он автоматизирует задачу получения содержимого веб-страницы и публикации форм.

<?php 
/* load the snoopy class and initialize the object */ 
require('../includes/Snoopy.class.php'); 
$snoopy = new Snoopy(); 

/* set some values */ 
$p_data['color'] = 'Red'; 
$p_data['fruit'] = 'apple'; 

$snoopy->cookies['vegetable'] = 'carrot'; 
$snoopy->cookies['something'] = 'value'; 

/* submit the data and get the result */ 
$snoopy->submit('http://phpstarter.net/samples/118/data_dump.php', $p_data); 

/* output the results */ 
echo '<pre>' . htmlspecialchars($snoopy->results) . '</pre>'; 
?> 
+0

Наверное, лучшее решение, если не каждый веб-сервер поддерживает CURL. Спасибо за совет. –

Смежные вопросы