我有一個PHP文件,吐出一個表單。我想調用這個PHP文件服務器端,(目前使用「包含」),填寫並提交。虛擬PHP表格
這樣更好,所以我不必介入實際的表單PHP,只需處理表示層,以便通過自己的PHP文件理解數據。
這可能嗎? 「方法」形式是POST。
我有一個PHP文件,吐出一個表單。我想調用這個PHP文件服務器端,(目前使用「包含」),填寫並提交。虛擬PHP表格
這樣更好,所以我不必介入實際的表單PHP,只需處理表示層,以便通過自己的PHP文件理解數據。
這可能嗎? 「方法」形式是POST。
您將無法填寫表格並使用include()
提交。提交表單意味着它必須通過HTTP到Web服務器,所以您要查找的是模擬POST請求。 PHP有一個叫做CURL的流行庫來做到這一點。
嘗試這樣:
$ch = curl_init('http://www.example.com/yourform.php');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'var1=value1&var2=value2&whatever=stuff');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
$output
將包含頁面的輸出,如果你剛剛提交表單。
所以你想提交一個表格給自己?聽起來像CURL將是實現它的方式,但是你會創建另一個HTTP會話。否則,您可以模擬POST變量並從外部腳本中調用表單的操作。
我明白了一部分有關在(可能只讀填充?)POST數據數組,但是如何調用表單的操作?我可以使用哪些PHP函數? – 2009-04-26 05:37:19
根據您的意見,這聽起來像是您試圖模擬在當前請求中提交此表單。我不確定你是否可以用cURL做到這一點 - 我認爲每個PHP腳本的調用都是獨立執行的,所以腳本當前運行的全局變量不會被處理cURL請求的運行共享。
我會處理這將創建一個函數來處理表單提交的方式:
function handle_form($postdata) {
// whatever you would normally do, just replace $_POST with $postdata
}
// to handle a normal form submission:
handle_form($_POST);
這樣,您就可以通過只創建一個與表單字段的陣列模擬提交表單值:
$formvals['fieldname1'] = 'fieldvalue1';
$formvals['fieldname2'] = 'fieldvalue2';
和主叫
handle_form($formvals);
這個CURL請求是否會在同一個會話中執行? (使用當前的PHP會話) 並且它會在相同的「環境」中執行嗎? (可以訪問全局變量)? – 2009-04-26 06:16:21