2009-10-29 99 views
1

我有一個POST方法的提交表單,我想寫一個腳本,可以自動提交這個表單,我之所以需要這個是爲了測試目的。我很少需要大量數據來測試基於這些表單域的搜索,而且我沒有時間去做這件事。這可能嗎?使用PHP提交表單

回答

5

您可以使用捲曲來模擬表單提交。

// 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 2009-10-29 12:19:03

0

讓PHP用數據填寫表單並打印出一個發佈表單的Javascript,PHP不能發佈它自己的表單。

+0

爲什麼選擇投票?他明確要求腳本來發布form_,這是PHP無法完成的。 – 2009-10-29 12:16:11

+1

任何降低壓力的原因可能都是因爲你說PHP不能做用戶所要求的事情,但它有一些能夠完成問題的庫,正如其他答案指出的那樣。我建議,如果你不想降價,可以修改你的答案或刪除它。 – PTBNL 2009-10-29 13:21:24

+0

好吧,不。如果我錯了,我不在乎是否我會得到低估,但是PHP庫(如Snoopy)所做的只是將POST數據發佈到指定的PHP文檔。這與發佈表單不一樣......據我瞭解,他最初的問題是提交HTML表單,而不是簡單地將數據發佈到頁面。 – 2009-10-29 15:24:31

0

您可以使用php.net/curl通過PHP發送POST請求。

2

如果你不舒服使用curl您可以使用PHP庫調用snoopy模擬Web瀏覽器。它可以自動完成檢索網頁內容和發佈表單的任務。

<?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

可能是最好的解決方案,一旦不是每個Web服務器都支持CURL。謝謝你的提示。 – 2011-02-15 16:52:18