2011-07-31 73 views
0

我有一個文件下面的表格稱爲「foobar.html」:填寫,並用PHP提交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,怎麼辦我填寫並提交此表單時沒有來自用戶的任何輸入?謝謝

回答

1

用HTML解析器解析出action屬性,並使用curl將perform a POST添加到適當的目標URL。

0

將整個火焰讀入一個變量。而不是使用fopen,你可能需要考慮file_get_contents,它更清潔一些。

然後,您需要將該字符串解析爲HTML。你可以使用PHP的DOMDocument。通過遍歷DOM樹到表單標籤並讀出這些屬性,獲取表單的動作和方法。接下來獲取表單標籤內的任何輸入的名稱。使用這些名稱與您的鍵=值對一起生成查詢字符串。如果表單的方法是GET,則將該查詢字符串附加到表單操作,否則將其保存在另一個變量中。

最後,用CURL「提交」表格。也就是說,使用表單操作作爲CURL請求的URL。如果表單方法是GET,則應該已經將數據附加到URL,如果方法是POST,則需要將CURL請求的數據設置爲從表單名稱生成的數據查詢字符串。

如果您的問題延伸到如何知道填寫什麼樣的表單字段,那幾乎不可能解決。當然,有些輸入名稱可以查找並猜測所需的數據,但通用解決方案是不可能解決的問題。

0

您是否想讓的用戶在其瀏覽器頁面上提交表單,而無需用戶干預?如果是這樣的話,您需要使用javascript,如下所示:

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

這會自動提交表單。一些注意事項:並非每個人都啓用了JavaScript,所以您可能需要將輸入更改爲type="hidden",並添加一個很好的大提交按鈕,其中包含Click Here